[Real World Haskell 日本語] の P.378 - P.379 に
Supply モナドを乱数の発生源として利用する方法が書かれていますが、
このように 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 モナドの利用方法を例示するために無理矢理そうしたとしか思えないのですが、
ちゃんとした意義はあるのでしょうか。