下面的程序可以接受键盘输入的数据。
main = doputStrLn "Hello, what' s your name?" name <- getLine putStrLn ("Hey " ++ name ++ ", you rock!")
getLine 每次调用,返回结果可能都会不同,这一点和 Haskell 所说的函数有很大不同,因此,把它的值“赋予”一个变量符号,不再用 “=” 号,而是用 <- 号。
我们看一下 getLine 的类型:
>> :t getLine
getLine :: IO String
可以看出,它表明这是 IO String 类型,事实上这是函数式程序和外部世界打交道的通道,Haskell 借用 IO 类型,划清了有状态/无状态世界边界。