モナドとは?
もなど
モナドとは、哲学では単純で分割不可能な実体を指すライプニッツの概念であり、関数型プログラミングでは計算の文脈や副作用を抽象化した構造のことです。
モナドには、哲学とプログラミングという二つの主要な文脈があります。
哲学におけるモナドは、17〜18世紀のドイツの哲学者ゴットフリート・ライプニッツが提唱した概念です。彼は宇宙の根本的な構成要素を「モナド(単子)」と呼び、それは分割不可能・物理的延長を持たない・相互作用しない・それぞれが宇宙全体を反映するという特性を持つと論じました。これはデカルトの心身二元論やスピノザの一元論に対する独自の形而上学体系です。
関数型プログラミングにおけるモナドは、計算の文脈(状態・例外・非同期・入出力など)を型として抽象化するデザインパターンです。HaskellをはじめとするScala・F#などの言語で中心的な概念として使われます。モナドは以下の三つの要素から構成されます。
- 型コンストラクタ(値を文脈で包む型)
- return / pure(値をモナドに持ち上げる関数)
- bind(>>=)(モナドの値を取り出し次の計算に渡す演算子)
プログラミングのモナドは、副作用を持つ処理を純粋関数的に扱うことを可能にし、コードの予測可能性・テスタビリティを高めます。数学的には圏論の概念に由来しており、哲学的モナドとは直接の関係はありませんが、「自己完結した単位」というイメージに共通点があります。
使い方・例文
「Haskellでは入出力処理をモナド(IOモナド)として扱うことで、純粋関数と副作用のある処理を明確に分離できます。」のように使われます。
この用語をシェア
最終更新: