Курсовая работа: Адресная книжка на Haskell

инструкция -> выражение ;

| образец <- выражение ;

| let список-объявлений ;

| ; (пустая инструкция)

Do-выражения предоставляют более удобный синтаксис для монадического программирования. Оно позволяет записать такое выражение

putStr "x: " >>

getLine >>= \l ->

return (words l)

в более традиционном виде:

doputStr "x: "

l <- getLine

return (words l)

Трансляция:

Для do-выражений выполняются следующие тождества, которые, после удаления пустых stmts, можно использовать в качестве трансляции в ядро:

do {e} =e

do {e;stmts} =e >> do {stmts}

do {p <- e; stmts} =let ok p = do {stmts}

ok _ = fail "..."

in e >>= ok

do {let decls; stmts} =let decls in do {stmts}

Пропуски "..." обозначают генерируемое компилятором сообщение об ошибке, передаваемое функции fail, желательно давая некоторое указание на местоположение ошибки сопоставления с образцом; функции >>, >>= и fail являются операциями в классе Monad, определенными в Prelude; ok является новым идентификатором.

Как показано в трансляции do, переменные, связанные let, имеют полностью полиморфные типы, тогда как те переменные, которые определены с помощью <-, являются связанными лямбда-выражением и поэтому являются мономорфными.

2.3 Монада ввода/вывода

2.3.1.Функции ввода

Эти функции считывают данные из стандартного устройства ввода (обычно это пользовательский терминал).

getChar :: IO Char

getLine :: IO String

getContents :: IO String

interact :: (String -> String) -> IO ()

К-во Просмотров: 517
Бесплатно скачать Курсовая работа: Адресная книжка на Haskell