関数型プログラミング言語Haskell Part3 at TECH
[2ch|▼Menu]
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