fumieval
https://github.com/haskell/bytestring/issues/140 削除を含めいろいろな案が出ましたが、現在のメンテナはインスタンスを変えたくないようで…一方GHC側で警告を出す変更が提案されており、採用される可能性が高そうです
Prelude
についても警告するって挙動だったのが改善された、という経緯があるので報告したら直してもらえるかも。main = do putStrLn "a" main
do
の中での再帰ってどう扱われるんだろうと気になって調べたらとても分かりやすい解説でした。Monad
において (>>)
が第二引数を非正格に評価する場合( 少なくとも IO
は該当するはず!)はサンクが再帰の数だけ積まれるようなことはない、と。f :: b -> (a,b)
みたいな漸化式から系列 [a]
を得るのに、 map fst $ iterate (f . snd) e
というような式を書いていたのだけど、 unfoldr (Just . f) e
で目的のものが得られることが最近判明。random
のサンプルコード http://hackage.haskell.org/package/random-1.2.0