Haskell 学习笔记-15:IO操作,有状态/无状态世界的隔离与结合

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/quicmous/article/details/80813152

下面的程序可以接受键盘输入的数据。

main = do
    putStrLn "Hello, what' s your name?"   
    name <- getLine   
    putStrLn ("Hey " ++ name ++ ", you rock!")

getLine 每次调用,返回结果可能都会不同,这一点和 Haskell 所说的函数有很大不同,因此,把它的值“赋予”一个变量符号,不再用 “=” 号,而是用 <- 号。

我们看一下 getLine 的类型:

>> :t getLine
getLine :: IO String

可以看出,它表明这是 IO String 类型,事实上这是函数式程序和外部世界打交道的通道,Haskell 借用 IO 类型,划清了有状态/无状态世界边界。

猜你喜欢

转载自blog.csdn.net/quicmous/article/details/80813152