関数型プログラミング言語Haskell Part5
■ このスレッドは過去ログ倉庫に格納されています
0418デフォルトの名無しさん
2006/06/24(土) 18:10:36『入門Haskell』のP135なのですが、
[x | x <- [1..10], x `mod` 2 /= 0]
が
do {x <- [1..10]; guard(x `mod` 2 /= 0); return x}
と同等であるという説明があります。
ここの x <- [1..10]という演算が何をするのか、よく分かりません。
x <- [1] なら分かるのですが、複数の要素に何をしているのでしょう?
結果的には、[1..10]のすべての要素に guard 以下が実行され、その結果が
mplus である ++ で結合されています。
しかし、式の中には mplus も出てこないので、なぜmplusが呼ばれるのかも
分かりません。
↓も見てみましたが、
http://www.sampou.org/haskell/a-a-monads/html/listmonad.html
<- 演算子が何をするのか、mplusとどう関係するのか、結局分かりません
でした。
■ このスレッドは過去ログ倉庫に格納されています