関数型プログラミング言語Haskell Part8
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
50:デフォルトの名無しさん 07/11/06 23:09:33 letのところは無視してdo構文の各行を最終的な型だけで見てやったら それぞれこんな感じになって、 1. do {r <- IO r; IO ()} 2. do {r <- IO r; String} 3. do {r <- IO r; [Int]} これを >>= を使った形にしたらこんな感じ。 1. IO r >>= (r -> IO ()) 2. IO r >>= (r -> String) 3. IO r >>= (r -> [Int]) (>>=) :: m a -> (a -> m b) -> m bだから >>=の前後は m a >>= (a -> m b) って状態になってないといけない。 1はちゃんとそれを満たしてるからOKだけど、 2はString = [Char] = [] Charで、IO ≠ []なのでNG。 3も同様にNG。 51:デフォルトの名無しさん 07/11/06 23:39:33 >>49 読んだ 少し分かったような分からないような…? YOUはIOモナドを使った関数も参照透明だよって言ってるけど 標準入力読んだときとか乱数生成したときとか同じ引数あげても同じ値が返ってくるとは 限らないじゃん それって困るんじゃないの? って思うの >>50 >>49の説明と合わせたらちょっと分かったかも そーいえばリストもモナドなんだったっけ 例示してくれた1.2.3.の例はHaskellとして正しい文法なん? 言いたい意味はわかるけどそういう書き方があるの? 前スレ952が教えてくれたサイトやら見てみたけどわかんない…
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5214日前に更新/201 KB
担当:undef