Изучай Haskell во имя добра! [заметки]

Шрифт
Интервал

1

В современных версиях интерпретатора GHCi для печати результатов вычислений используется функция >show, которая представляет кириллические символы соответствующими числовыми кодами Unicode. Поэтому в следующем листинге вместо строки "лама" будет фактически выведено "\1083\1072\1084\1072". В тексте книги для большей понятности кириллица в результатах оставлена без изменений. – Прим. ред.

2

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

3

На самом деле в определении функций они называются образцами, но об этом пойдёт речь далее. – Прим. ред.

4

Вообще говоря, конструкцию с >if можно определить в виде функции:

>if' :: Bool –> a –> a –> a

>if' True x _ = x

>if' False _ y = y

Конструкция введена в язык Haskell на уровне ключевого слова для того, чтобы минимизировать количество скобок в условных выражениях. – Прим. ред.

5

Следует отметить, что операторами называются двухместные инфиксные функции, имена которых состоят из служебных символов: >+, >*, >>>= и т. д. – Прим. ред.

6

Однако есть нульместный кортеж, обозначаемый в языке Haskell как >(). – Прим. ред.

7

На деле в образцах нельзя использовать операторы, представляющие собой двухместные функции (например, >+, >/ и >++), поскольку при сопоставлении с образцами производится, по сути, обратная операция. Как сопоставить заданное число 5 с образцом >(x + y)? Это можно сделать несколькими способами, то есть ситуация неопределённа. Между тем оператор >: является конструктором данных (все бинарные операторы, начинающиеся с символа >:, могут использоваться как конструкторы данных), поэтому для него можно произвести однозначное сопоставление. — Прим. ред.

8

Это так. В качестве упражнения повышенной сложности читателю рекомендуется реализовать при помощи свёртки функции >drop и >dropWhile из стандартной библиотеки. – Прим. ред.

9

В тех же целях издательством «ДМК Пресс» выпущена книга: Душкин Р. В. Справочник по языку Haskell. – М.: ДМК Пресс, 2008. – 544 стр., ил. ISBN 5–94074–410–9.

10

На самом деле в синтаксисе языка Haskell имеются ещё так называемые (n + k)-образцы. Впрочем, большая часть сообщества языка их отвергает. – Прим. ред.

11

Текст этого раздела переработан в соответствии с современным стилем обработки исключений. – Прим. ред.

12

Читателей, знакомых с комбинаторной логикой, такое определение экземпляра класса >Applicative для функционального типа смутить не должно – методы определяют комбинаторы K и S соответственно. – Прим. ред.

13

Специалисты по нечёткой логике могут увидеть в этом определении троичную логику Лукасевича. – Прим. ред.

14

Это определение представляет собой один из возможных способов обхода двоичного дерева: «левый – корень – правый». Читатель может самостоятельно реализовать экземпляры для представления других способов обхода двоичных деревьев. – Прим. ред.

15

Если версия пакетов языка >Haskell base и >mtl, установленных в вашей системе, выше соответственно 4.3.1.0 и 2.0.1.0, вам нужно импортировать модуль >Control.Monad.Error в ваш скрипт или >Control.Monad.Instances в интерпретатор GHCi, перед тем как вы сможете использовать функции экземпляра класса >Monad для типа >Either. Это связано с тем, что в этих версиях пакетов объявления экземпляров были перенесены в модуль >Control.Monad.Instances. – Прим. перев.


Рекомендуем почитать
Параллельное программирование на С++ в действии. Практика разработки многопоточных программ

В наши дни компьютеры с несколькими многоядерными процессорами стали нормой. Стандарт С++11 языка С++ предоставляет развитую поддержку многопоточности в приложениях. Поэтому, чтобы сохранять конкурентоспособность, вы должны овладеть принципами и приемами их разработки, а также новыми средствами языка, относящимися к параллелизму.Книга «Параллельное программирование на С++ в действии» не предполагает предварительных знаний в этой области. Вдумчиво читая ее, вы научитесь писать надежные и элегантные многопоточные программы на С++11.


Дефрагментация мозга. Софтостроение изнутри

Эта книга для тех, кто давно связан с разработкой программного обеспечения. Или для тех, кто еще думает выбрать программирование своей профессией. Или для тех, кто просто привык думать и размышлять о происходящем в мире информационных технологий.Не секрет, что основная масса софтостроения сосредоточена в секторе так называемой корпоративной разработки: от комплексных информационных систем предприятия до отдельных приложений. Поэтому немалая часть сюжетов касается именно Enterprise Programming.Из текста вы вряд ли узнаете, как правильно склеивать многоэтажные постройки из готовых компонентов в гетерогенной среде, проектировать интерфейсы, синхронизировать процессы или писать эффективные запросы к базам данных.


Справочник по JavaScript

Вниманию читателей предлагается справочник по JavaScript.Справочник предназначается для людей, уже освоивших азы программирования в JavaScript.Справочник создан на основе информации, предоставленной на сайте «Справочник Web-языков» www.spravkaweb.ru.Дата выхода данной версии справочника: 12:33, 21 марта 2007.


Справочник по PHP

Вниманию читателей предлагается справочник по PHP.Справочник предназначается для людей, уже освоивших азы программирования на языке PHP.Справочник создан на основе информации, предоставленной на сайте «Справочник Web-языков» www.spravkaweb.ru.


Fiction Book Designer Краткое руководство

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


Программирование на Visual C++. Архив рассылки

РАССЫЛКА ЯВЛЯЕТСЯ ЧАСТЬЮ ПРОЕКТА RSDN, НА САЙТЕ КОТОРОГО ВСЕГДА МОЖНО НАЙТИ ВСЮ НЕОБХОДИМУЮ РАЗРАБОТЧИКУ ИНФОРМАЦИЮ, СТАТЬИ, ФОРУМЫ, РЕСУРСЫ, ПОЛНЫЙ АРХИВ ПРЕДЫДУЩИХ ВЫПУСКОВ РАССЫЛКИ И МНОГОЕ ДРУГОЕ.