関数型プログラミング言語Haskell Part3
at TECH
206:デフォルトの名無しさん
04/10/14 01:54:56
んじゃ自分の理解度の確認を兼ねて。(突っ込みよろしく)
モナドは数学上はモノイドといって単位元を持つ半群のこと。
一応簡単な説明。
(X * X ) * X = X * ( X * X ) といった「結合側」が成り立つ演算*があって
(E * X ) = ( X * E ) = X となる単位元Eを持つようなXのこと。
X が整数だとすれば * は足し算 E は 0
もちろん * を掛け算 E は 1としてもいい。
* を文字列の結合 , Eを空文字列 "" とすれば文字列もモノイドとみなせる。
で、HaskellのIO型には
上の文字列モナド(モノイド)の1文字づつの代わりにOSのシステムコール呼び出しの機械語が
入っていると思えばいい。
IOモナドA( [キー入力] ) >> IOモナドB( [画面出力] ) を適用すると
IOモナドC( [キー入力]の次に[画面出力] ) になる
みたいな。
で どんどん >> や >>=で繋いでいくわけ。
もちろん結合則も成り立つ。
ちなみにreturn 関数が返すIO型が単位元になってる。
これはreturnの返すIOには何もシステムコール?が含まれてないから
上の文字列モナドの空文字列みたいな感じ
これで宜しいでしょうか>>204
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5373日前に更新/259 KB
担当:undef