我正在尝试处理IO操作。我想知道为什么这样做:
main = do
alias = getLine
name <- alias
putStrLn ("your name is: " ++ name)
说
parse error on input `='
答案 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)