Unknown - haskell-notes

Здесь есть возможность читать онлайн «Unknown - haskell-notes» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Старинная литература, на английском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

haskell-notes: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «haskell-notes»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

haskell-notes — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «haskell-notes», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

к комплексным числам мы теряем способность сравнения на больше/меньше, но сохраняем возможность

вычисления арифметических операций, поэтому класс Realэто пересечение классов Numи Ord:

Prelude> :i Real

class( Numa, Orda) => Reala where

toRational ::a -> Rational

Здесь “пересечение” означает “и тот и другой”. Пересечение классов кодируется с помощью контекста.

Вернёмся к нашему первому примеру:

36 | Глава 2: Первая программа

Prelude>realToFrac (1 ::Float) +(1 ::Double)

2.0

Отметим, что этой функцией можно пользоваться не только для типов Floatи Double, в Haskell возможны

самые экзотические числа.

Если преобразования между Floatи Doubleпроисходят очень-очень часто, возможно имеет смысл вос-

пользоваться специальными для GHCфункциями: Они определены в модуле GHC.Float:

Prelude> :m +GHC.Float

Prelude GHC.Float> :t float2Double

float2Double :: Float -> Double

Prelude GHC.Float> :t double2float

double2Float :: Double -> Float

2.7 Документация

К этой главе мы уже рассмотрели основные конструкции языка и базовые типы. Если у вас есть какая-то

задача, вы уже можете начать её решать. Для этого сначала нужно будет описать в типах проблему, затем

выразить с помощью функций её решение.

Но не стоит писать все функции самостоятельно, если функция достаточно общая её наверняка кто-

нибудь уже написал. Самые полезные функции и классы определены в модуле Preludeи основных стан-

дартных библиотечных модулях. Было бы излишним описывать каждую функцию, книга превратилась бы

в справочник. Вместо этого давайте научимся искать функции в документации. Нам понадобится умение

составлять типы функций и небольшое знание английского языка.

Для начала о том, где находится документация к стандартным модулям. Если вы установили ghc вме-

сте с Haskell Platformпод Windows скорее всего во вкладке Пуск, там где иконка ghc там же находится

и документация. В Linux необходимо найти директорию с документацией, скорее всего она в директории

/usr /local /share /doc /ghc /libraries. Также документацию можно найти в интернете, наберите в поиско-

вике Haskell Hierarchical Libraries. На главной странице документации вы найдёте огромное количество мо-

дулей. Нас пока интересуют разделы Dataи Prelude. Разделы расположены по алфавиту. То что вы видите

это стандартный вид документации в Haskell. Документация делается с помощью специального приложе-

ния Haddock, мы тоже научимся такие делать, но позже, пока мы попробуем разобраться с тем как искать в

документации функции.

Предположим нам нужно вычислить длину списка. Нам нужна функция, которая принимает список и

возвращает целое число, скорее всего её тип [a] -> Int, обычно во всех библиотечных функциях для це-

лых чисел используется тип Int, также на месте параметра используются буквы a, b, c. Мы можем открыть

документацию к Preludeнабрать в строке поиска тип [a] -> Int. Или поискать такую функцию в разде-

ле функций для списков List Operations. Тогда мы увидим единственную функцию с таким типом, под

говорящим именем length. Так мы нашли то, что искали.

Или мы ищем функцию, которая переворачивает список, нам нужна функция с типом [a] ->[a]. Таких

функций в Preludeнесколько, но имя reverse одной из них может намекнуть на её смысл.

Но одной Preludeмир стандартных функций Haskell не ограничивается, если вы не нашли необходимую

вам функцию в Preludeеё стоит поискать в других библиотечных модулях. Обычно функции разделяются

по тому на каких типах они определены. Так например функция sort :: Orda =>[a] ->[a] определена

не в Prelude, а в отдельном библиотечном модуле для списков он называется Data.List. Так же есть много

других модулей для разных типов, таких как Data.Bool, Data.Char, Data.Function, Data.Maybeи многие

другие. Не пугайтесь изобилия модулей постепенно они станут вашей опорой.

Для поиска в стандартных библиотеках есть замечательный интернет-сервис Hoogle (http://www.

haskell.org/hoogle/). Hoogle может искать значения не только по имени, но и по типам. Например мы

хотим узнать целочисленный код символа. Поиск по типу Char -> Intвыдаёт искомую функцию digitToInt.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «haskell-notes»

Представляем Вашему вниманию похожие книги на «haskell-notes» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «haskell-notes»

Обсуждение, отзывы о книге «haskell-notes» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x