Учебник по Haskell | страница 43
документации функции.
Предположим нам нужно вычислить длину списка. Нам нужна функция, которая принимает список и
возвращает целое число, скорее всего её тип [a] -> Int, обычно во всех библиотечных функциях для це-
лых чисел используется тип Int, также на месте параметра используются буквы a, b, c. Мы можем открыть
документацию к Prelude набрать в строке поиска тип [a] -> Int. Или поискать такую функцию в разде-
ле функций для списков List Operations. Тогда мы увидим единственную функцию с таким типом, под
говорящим именем length. Так мы нашли то, что искали.
Или мы ищем функцию, которая переворачивает список, нам нужна функция с типом [a] -> [a]. Таких
функций в Prelude несколько, но имя reverse одной из них может намекнуть на её смысл.
Но одной Prelude мир стандартных функций Haskell не ограничивается, если вы не нашли необходимую
вам функцию в Prelude её стоит поискать в других библиотечных модулях. Обычно функции разделяются
по тому на каких типах они определены. Так например функция sort :: Ord a => [a] -> [a] определена
не в Prelude, а в отдельном библиотечном модуле для списков он называется Data.List. Так же есть много
других модулей для разных типов, таких как Data.Bool, Data.Char, Data.Function, Data.Maybe и многие
другие. Не пугайтесь изобилия модулей постепенно они станут вашей опорой.
Для поиска в стандартных библиотеках есть замечательный интернет-сервис Hoogle (http://www.
haskell.org/hoogle/). Hoogle может искать значения не только по имени, но и по типам. Например мы
хотим узнать целочисленный код символа. Поиск по типу Char -> Int выдаёт искомую функцию digitToInt.
2.8 Краткое содержание
В этой главе мы познакомились с интерпретатором ghci и основными типами. Рассмотрели много при-
меров.
Документация | 37
Типы
Bool
– Основные операции: &&, ||, not, if c then t else e
Char
– Значения пишутся в ординарных кавычках, как в ’H’, ’+’
String
– Значения пишутся в двойных кавычках, как в ”Hello World”
Int
– Эффективные целые числа, но ограниченные
Integer
– Не ограниченные целые числа, но не эффективные
Double
– Числа с двойной точностью
Float
– Числа с ординарной точностью
Rational
– Дробные числа
Нам впервые встретились кортежи (на функции properFraction). Кортежи используются для возвраще-
ния из функции нескольких значений. Элементы кортежа могут иметь разные типы. Для извлечения элемен-
тов из кортежей-пар используются функции fst и snd. Кортежи пишутся в скобках, и элементы разделены