Курсовая работа: Адресная книжка на Haskell
2.2.1 Кортежи
Кортежи записываются в виде (e1 , . . . , ek) и могут быть произвольной длины
k >= 2 . Конструктор для кортежа размером n обозначается (,...,), где n − 1 запятых.
Таким образом, (a,b,c) и (,,) a b c обозначают одно и то же значение. Стандартные операции над кортежами описаны в Prelude.
Трансляция: (e1 , . . . , ek) для k >= 2 является экземпляром кортежа размера
k, в соответствии с определением в Prelude и не требуют трансляции. Если t1 , ...
, tk – соответствующие типы e1 , ... , ek , то типом кортежа будет (t1 , . . . , tk).
2.2.2 Списки
Списки записываются в виде [e1, ..., ek], где k>=1. Конструктором списка является :, пустой список обозначается []. Стандартные операции над списками описаны в Prelude:
Функция head возвращает первый элемент списка.
Функция last возвращает последний элемент списка.
Функция tail возвращает список без первого элемента
Функция init возвращает список без последнего элемента
Функция null проверяет список на пустоту. Если в качестве аргумента этой опера-ции будет задан пустой список, то функция выдаст значение True, в противном случае - False
Функция length возвращает длину списка.
Функция elem проверяет наличие элемента в списке.
Функция take возвращает список, состоящий из n первых элементов исходного списка.
Функция zip возвращает список, состоящий из пар объединенных исходных списков.
Функция !! возвращает элемент, номер которого задан (начиная с 0).
Функции head и tail определены для непустых списков. При попытке применить их к пустому списку интерпретатор сообщает об ошибке.
2.2.3 Do – выражение
exp -> do { stmts } (do-выражение)
stmts -> stmt1 ... stmtn exp [;] (n>=0)
stmt -> exp ;
| pat <- exp ;
| let decls ;
| ; (пустая инструкция)
Перевод:
выражение -> do { список-инструкций } (do-выражение)