以下のプログラムにおいて、コンパイルはできるが実行してもなにも表示されない。
f :: IO [Char] f = return "foo" main = do s <- f putStrLn s
Prim.returnIO では、Prim.IO a のように戻り値を ConObj でくるんでいたのに、 Prim.bindIO で、くるんでいるのを剥がさずにつぎの関数にわたしていた。
Prim.bindIO ではがしてもいいが、そもそもくるむ意味がないので、そちらをやめた。
この変更で期待通り出力されるようになった。