Читать онлайн «Мягкое введение в Haskell (A gentle Introduction to Haskell 98)»

Автор John Peterson

Оно скорее служит дополнением к Описанию Языка Haskell (Haskell Report [4]), которое само по себе является довольно сжатым техническим описанием. Наша задача – обеспечить «мягкое» введение в Haskell для имеющих опыт программирования, по крайней мере, на одном языке, желательно функциональном (даже если это «почти функциональный» язык, такой как ML или Scheme). Если читатель желает узнать больше о функциональном стиле программирования, мы настоятельно рекомендуем [1] или [2]. Полезный обзор языков и техник функционального программирования, включающий некоторые принципы дизайна языка, использованные в Haskell, можно найти в [3]. С момента своего появления на свет в 1987 году язык Haskell существенно изменился. В этом руководстве используется Haskell 98. Более ранние версии языка теперь считаются устаревшими; рекомендуется использовать Haskell 98. Существует также множество расширений Haskell 98, которые присутствуют в разнообразных реализациях языка. Они к настоящему моменту не являются формальной частью Haskell и не описываются в данном руководстве. Наша общая стратегия представления возможностей языка такова: мотивация идеи, определение терминологии, некоторое количество примеров и ссылки на Описание (Haskell Report) для ознакомления с подробностями. Мы, однако, предполагаем, что читатель полностью проигнорирует эти подробности, до тех пор, пока полностью не прочитает Введение в Haskell.
С другой стороны, библиотека Standard Prelude языка Haskell (см. Приложение A, «Описания») и другие стандартные библиотеки (см. [5]) содержат много полезных примеров кода на Haskell; желательно прочесть их после завершения изучения этого руководства. Это не только даст читателю возможность почувствовать, как выглядит прикладной код на Haskell, но также познакомит его со стандартным набором предопределённых функций и типов. ПРИМЕЧАНИЕ Мы также решили не начинать изложение с полного свода лексических правил. Вместо этого мы вводим их последовательно, в соответствии с требованиями примеров, и заключаем в скобки, как этот абзац. Это полностью противоположно организации Описания, однако Описание остаётся авторитетным источником информации (ссылки вида «§2. 1» ссылаются на разделы Описания). Haskell представляет собой сильно типизированный (typeful, термин Luca Cardelli) язык программирования: типизация повсеместна, и новичка с самого начала следует предупредить о мощности и сложности системы типов языка.