コモナド
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/01/16 04:57 UTC 版)
「モナド (プログラミング)」の記事における「コモナド」の解説
コモナドはモナドの圏論的な双対である。型構築子 W T と2つの演算 extract と extend を持つ。extract の型は W T → T であり、extend の型は (W T → T' ) → W T → W T' であり、以下のコモナド則を満たすとする。 extend extract = id {\displaystyle {\text{extend}}\,\,{\text{extract}}={\text{id}}} extract ∘ ( extend f ) = f {\displaystyle {\text{extract}}\circ ({\text{extend}}\,f)=f} ( extend f ) ∘ ( extend g ) = extend ( f ∘ ( extend g ) ) {\displaystyle ({\text{extend}}\,f)\circ ({\text{extend}}\,g)={\text{extend}}\,(f\circ ({\text{extend}}\,g))} 他の方法として、fmap と extract と duplicate を使った定義もできる。fmap と extract により W は余基点付き函手となる。duplicate がコモナドを特徴付ける。duplicate の型は W T → W (W T) であり、次の規則を満たす。 extract ∘ duplicate = id {\displaystyle {\text{extract}}\circ {\text{duplicate}}={\text{id}}} fmap extract ∘ duplicate = id {\displaystyle {\text{fmap}}\,{\text{extract}}\circ {\text{duplicate}}={\text{id}}} duplicate ∘ duplicate = fmap duplicate ∘ duplicate {\displaystyle {\text{duplicate}}\circ {\text{duplicate}}={\text{fmap}}\,{\text{duplicate}}\circ {\text{duplicate}}} ふたつの定式化の関係は fmap : ( A → B ) → W A → W B = f ↦ extend ( f ∘ extract ) {\displaystyle {\text{fmap}}:(A\rightarrow B)\rightarrow \mathrm {W} \,A\rightarrow \mathrm {W} \,B=f\mapsto {\text{extend}}\,(f\circ {\text{extract}})} duplicate : W A → W W A = extend id {\displaystyle {\text{duplicate}}:\mathrm {W} \,A\rightarrow \mathrm {W} \,\mathrm {W} \,A={\text{extend}}\,{\text{id}}} extend : ( W A → B ) → W A → W B = f ↦ ( fmap f ) ∘ duplicate {\displaystyle {\text{extend}}:(\mathrm {W} \,A\rightarrow B)\rightarrow \mathrm {W} \,A\rightarrow \mathrm {W} \,B=f\mapsto ({\text{fmap}}\,f)\circ {\text{duplicate}}} で与えられる。 モナドが副作用を表現すると言われているのに対して、コモナド W は一種の「文脈」を表している。extract は文脈から値を取り出す関数である。extend は型 W A → B を持つ「文脈依存の関数」を合成してパイプラインを作る。
※この「コモナド」の解説は、「モナド (プログラミング)」の解説の一部です。
「コモナド」を含む「モナド (プログラミング)」の記事については、「モナド (プログラミング)」の概要を参照ください。
- コモナドのページへのリンク