Опубликован: 19.09.2008 | Доступ: свободный | Студентов: 656 / 70 | Оценка: 4.50 / 5.00 | Длительность: 21:25:00
Лекция 1:

Предисловие

Лекция 1: 12 || Лекция 2 >

Авторы подразумевают, что это "Описание" принадлежит всему сообществу Haskell, и поэтому дают разрешение копировать и распространять его с любой целью, при условии, что оно будет воспроизведено полностью, включая это уведомление. Измененные версии этого "Описания" можно также копировать и распространять с любой целью, при условии, что измененная версия ясно представлена как таковая и не претендует на то, чтобы являться определением языка Haskell 98

Авторы: Lennart Augustsson, Dave Barton, Brian Boutel, Warren Burton, Joseph Fasel, Kevin Hammond, Ralf Hinze, Paul Hudak, John Hughes, Thomas Johnsson, Mark Jones, John Launchbury, Erik Meijer, John Peterson, Alastair Reid, Colin Runciman, Philip Wadler.

Перевод выполнен М.Ю.Ландиной и В.А.Рогановым

Около полдюжины человек формально написали комбинаторную логику, и большинство из них, включая нас, допустили ошибки. Поскольку некоторые из наших приятелей-грешников относятся к наиболее аккуратным и компетентным логикам современности, мы рассматриваем данный факт как доказательство того, что ошибок трудно избежать. Таким образом, полнота описания необходима для точности, и чрезмерная краткость была бы здесь ложной экономией, даже больше, чем обычно. (в предисловии к Комбинаторной Логике [2], 31 мая 1956)

Хаскелл Б. Карри (Haskell B. Curry) и Роберт Фейс (Robert Feys)

В сентябре 1987 на конференции "Языки функционального программирования и компьютерная архитектура" (FPCA '87) в Портленде, штат Орегон, было организовано заседание для того, чтобы обсудить плачевную ситуацию, сложившуюся в сообществе функционального программирования: возникло более дюжины нестрогих чисто функциональных языков программирования, сходных в выразительной мощности и семантических основах. Участники встречи пришли к твердому мнению, что более широкому использованию этого класса функциональных языков препятствовало отсутствие общего языка. Было решено, что должен быть сформирован комитет для разработки такого языка, который обеспечил бы более быстрое средство связи новых идей, устойчивой основы для разработки реальных приложений и механизма поощрения других людей использовать функциональные языки. Этот документ описывает результат усилий этого комитета - чисто функциональный язык программирования, названный Haskell , в честь логика Хаскелла Б. Карри (Haskell B. Curry), чей труд обеспечивает логическую основу для многих наших работ.

Цели

Основная цель комитета заключалась в разработке языка, который удовлетворял бы следующим требованиям:

  1. Язык должен быть пригоден для обучения, исследований и приложений, включая построение больших систем.
  2. Язык должен полностью описываться с помощью формальных синтаксиса и семантики.
  3. Язык должен находиться в свободном доступе. Следует разрешить свободную реализацию и распространение языка.
  4. Язык должен базироваться на идеях, которые получат широкое одобрение.
  5. Язык должен сократить излишнее многообразие языков функционального программирования.

Haskell 98: язык и библиотеки

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

Haskell действительно непрерывно развивался с тех пор, как было опубликовано его первоначальное описание. К середине 1997 было выполнено четыре итерации в разработке языка (самая последняя на тот момент - Haskell 1.4). В 1997 на семинаре по Haskell в Амстердаме было решено, что необходим стабильный вариант Haskell , этот стабильный вариант языка является темой настоящего описания и называется "Haskell 98".

Haskell 98 задумывался как относительно незначительная модификация Haskell 1.4, выполненная за счет некоторых упрощений и удаления некоторых подводных камней. Он предназначен играть роль "стабильного" языка в том смысле, что разработчики выполняют поддержку Haskell 98 в точности с его спецификацией, для обеспечения предсказуемости в будущем.

Первоначальное описание Haskell описывало только язык и стандартную библиотеку, названную Prelude. К тому времени, когда Haskell 98 был признан стабильной версией, стало ясно, что многим программам необходим доступ к большому набору библиотечных функций (особенно это касается ввода - вывода и взаимодействия с операционной системой). Если эта программа должна быть переносимой, набор библиотек также должен быть стандартизирован. Поэтому отдельный комитет (в который входили некоторые из членов комитета по разработке языка) начал вносить исправления в библиотеки Haskell 98.

Описания языка Haskell 98 и библиотек были опубликованы в феврале 1999.

Внесение исправлений в описание Haskell 98

Через год или два было выявлено много типографских ошибок и погрешностей. Я взялся собирать и выполнять эти исправления со следующими целями:

  • Исправить типографские ошибки.
  • Разъяснить непонятные переходы.
  • Разрешить неоднозначности.
  • С неохотой сделать небольшие изменения, чтобы язык стал более последовательным.

Эта задача, оказалось намного, намного более масштабной, чем я ожидал. Поскольку Haskell все более широко использовался, его описание внимательно изучалось все большим и большим количеством людей, и я внес сотни (главным образом небольших) поправок в результате этой обратной связи. Первоначальные комитеты прекратили свое существование, когда было опубликовано первое описание Haskell 98, поэтому каждое изменение вместо этого вносилось на рассмотрение всего списка адресатов Haskell .

Этот документ является результатом описанного процесса усовершенствования. Он включает и описание языка Haskell 98, и описание библиотек и составляет официальную спецификацию обоих. Он не является учебным пособием по программированию на Haskell , как краткий вводный курс "Gentle Introduction" [6], и предполагает некоторое знакомство читателя с функциональными языками.

Полный текст обоих описаний доступен в режиме онлайн (см. ниже "Ресурсы Haskell ").

Лекция 1: 12 || Лекция 2 >
Николай Щербаков
Николай Щербаков
Россия, Москва
Олег Корсак
Олег Корсак
Латвия, Рига