IO在haskell程序中有两种不同的使用方法,例如:
main :: IO ()
-- and
readLine :: IO Int
Run Code Online (Sandbox Code Playgroud)
这两者有什么区别?
唯一的区别是他们的回报价值. main返回一个类型的值,()并readLine返回一个Int.也许这个例子会有所帮助:
main = do
x <- putStrLn "Test"
print x
Run Code Online (Sandbox Code Playgroud)
当你运行它时,它输出:
>>> main
Test
()
Run Code Online (Sandbox Code Playgroud)
print语句打印一个()因为这是返回值putStrLn:
putStrLn :: String -> IO ()
Run Code Online (Sandbox Code Playgroud)
你通常不绑定某些东西的返回值的原因putStrLn是没有从这样做获得的信息,因为它总是返回()无论如何.