2

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

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

 parse error on input `='
4

1 回答 1

9

添加关键字let

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

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

alias = getLine

main = do
  name <- alias
  putStrLn ("your name is: " ++ name)
于 2013-09-27T09:48:56.140 回答