Я пытаюсь разобраться с действиями ввода-вывода. Интересно, почему это работает:
main = do
alias = getLine
name <- alias
putStrLn ("your name is: " ++ name)
говоря
parse error on input `='
Я пытаюсь разобраться с действиями ввода-вывода. Интересно, почему это работает:
main = do
alias = getLine
name <- alias
putStrLn ("your name is: " ++ name)
говоря
parse error on input `='
Добавить ключевое слово 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)