関数型プログラミング言語Haskell Part11
■ このスレッドは過去ログ倉庫に格納されています
0452デフォルトの名無しさん
2010/01/16(土) 22:27:42Supply モナドを乱数の発生源として利用する方法が書かれていますが、
このように Supply モナドを利用する意義が分かりません。
(もう少し言えば、この目的で State モナドを利用する意義)
評価するたびに違う乱数がほしいだけなら、次のようなものでもいいはず。
rand :: IO Int
rand = liftM fst (getStdRandom $ \g ->
let (a, b) = split g
in (random a, b))
あるいは、次ページにあるように Control.Arrow の first を使用して、
rand = fst `liftM` getStdRandom (first random . split)
でもいい。
Real World Haskell の解説において、
random ではなく、わざわざ randoms を使用して乱数リストを得るのは、
Supply モナドの利用方法を例示するために無理矢理そうしたとしか思えないのですが、
ちゃんとした意義はあるのでしょうか。
■ このスレッドは過去ログ倉庫に格納されています