Skip to content

Instantly share code, notes, and snippets.

@maoe
Created May 20, 2011 04:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maoe/982363 to your computer and use it in GitHub Desktop.
Save maoe/982363 to your computer and use it in GitHub Desktop.
unsafeInterleaveIOがまずいのがわかるコード辺
$ runhaskell UnsafeIO.hs
unsafeHello #1
unsafeHello #2
Hello, World
Hello, World #2
()
module Main where
import System.IO.Unsafe
hello = do
unit <- putStrLn "Hello, World"
putStrLn "Hello, World #2"
return unit
unsafeHello = unsafeInterleaveIO hello
main = do
putStrLn "unsafeHello #1"
unsafeHello -- なにも表示されない
putStrLn "unsafeHello #2"
unsafeHello >>= print -- 表示される
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment