试图处理IO动作

时间:2013-09-27 09:41:12

标签: haskell

我正在尝试处理IO操作。我想知道为什么这样做:

main = do
  alias = getLine
  name <- alias
  putStrLn ("your name is: " ++ name)

 parse error on input `='

1 个答案:

答案 0 :(得分:9)

添加关键字let

main = do
  let alias = getLine
  name <- alias
  putStrLn ("your name is: " ++ name)

do是monadic bind运算符的指定构造,它不是cosmic space。你写入块do的所有内容实际上都是>>= monaidic函数的链。所以你应该使用let构造。 但是你可以在程序的其他部分制作别名。

alias = getLine

main = do
  name <- alias
  putStrLn ("your name is: " ++ name)