Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

нотация DO

64K
10 ноября 2010 года
lissomort
1 / / 10.11.2010
Изучаю Haskell примерно неделю. Возникли заминки вот на каком коде:
----------------------------------------------
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)

Подскажите, в чем ошибка.
361
29 ноября 2010 года
Odissey_
661 / / 19.09.2006
первый вариант просто ошибка в let in

 
Код:
main :: IO()
main = do  putStr "First: ";
      first <- getLine;
      putStr "Last: ";
      last <- getLine;
      let full = first ++ " " ++ last in putStrLn ("Hello " ++ full ++ "!");
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог