Skip to content

Instantly share code, notes, and snippets.

@nobsun
Created May 22, 2017 07:27
Show Gist options
  • Save nobsun/0d52cf58ba78358b4740e9f6e694bc46 to your computer and use it in GitHub Desktop.
Save nobsun/0d52cf58ba78358b4740e9f6e694bc46 to your computer and use it in GitHub Desktop.
lazy IO と imperative programming とが相性がわるい例
module Main where
import System.IO.Unsafe
lazy :: IO a -> IO a
lazy = unsafeInterleaveIO
main :: IO ()
main = do
{ input1 <- getLine
; input2 <- getLine
; putStrLn ("out: " ++ input2)
; putStrLn "1.------"
; input3 <- lazy getLine
; input4 <- lazy getLine
; putStrLn ("out: " ++ input4)
; putStrLn "2.------"
}
{- ^
>>> :main
foo
bar
out: bar
1.------
baz
out: baz
2.------
-}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment