main :: IO()
main = do putStr "First: ";
first <- getLine;
putStr "Last: ";
last <- getLine;
let full = first ++ " " ++ last in putStrLn ("Hello " ++ full ++ "!");
нотация DO
----------------------------------------------
main :: IO()
main = do putStr "First: "
first <- getLine
putStr "Last: "
last <- getLine
let full = first ++ " " ++ last
putStrLn ("Hello " ++ full ++ "!")
-----------------------------------------------
main :: IO()
main = putStr "What is your first name? " >>
getLine >>= f
where
f first = putStr "And Last name? " >>
getLine >>= g
where
g last = putStrLn ("Hello " ++ full ++ "!")
where
full = first ++ " " ++ last
Первый вариант кода, насколько я понимаю, является более компактной версией второго варианта. Но компилятор (использую WinHUGS, но пробовал и на GHC) выдает ошибку:
Parse error in pattern
(второй компилятор заявляет, что Last part of DO notation must be an expression)
Подскажите, в чем ошибка.
Код: