Предисловие Описание Haskell 98
наверх | назад | вперед | содержание | предметный указатель функций


Предисловие

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

В сентябре 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 ").

Расширения Haskell 98

Haskell продолжает развиваться и сильно продвинулся дальше Haskell 98. Например, на момент написания этого документа имеются реализации Haskell , которые поддерживают:

Синтаксические возможности,
включая:

Новации в системе типов,
включая:

Расширения управления,
включая:

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

Ресурсы Haskell

Web-сайт Haskell

http://haskell.org

предоставляет доступ ко многим полезным ресурсам, включая:

Приглашаем Вас комментировать, предлагать усовершенствования и критиковать язык или его представление в описании посредством рассылки Haskell .

Построение языка

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

Arvind (MIT)
Lennart Augustsson (Chalmers University)
Dave Barton (Mitre Corp)
Brian Boutel (Victoria University of Wellington)
Warren Burton (Simon Fraser University)
Jon Fairbairn (University of Cambridge)
Joseph Fasel (Los Alamos National Laboratory)
Andy Gordon (University of Cambridge)
Maria Guzman (Yale University)
Kevin Hammond [редактор] (University of Glasgow)
Ralf Hinze (University of Bonn)
Paul Hudak [редактор] (Yale University)
John Hughes [редактор] (University of Glasgow; Chalmers University)
Thomas Johnsson (Chalmers University)
Mark Jones (Yale University, University of Nottingham, Oregon Graduate Institute)
Dick Kieburtz (Oregon Graduate Institute)
John Launchbury (University of Glasgow; Oregon Graduate Institute)
Erik Meijer (Utrecht University)
Rishiyur Nikhil (MIT)
John Peterson [редактор] (Yale University)
Simon Peyton Jones [редактор] (University of Glasgow; Microsoft Research Ltd)
Mike Reeve (Imperial College)
Alastair Reid (University of Glasgow)
Colin Runciman (University of York)
Philip Wadler [редактор] (University of Glasgow)
David Wise (Indiana University)
Jonathan Young (Yale University)
Те, кто помечены [редактор], работали в качестве координирующих редакторов одной или более ревизий языка.

Кроме того, множество других людей внесли свой вклад, некоторые --- небольшой, но многие --- существенный. Это следующие люди: Kris Aerts, Hans Aberg, Sten Anderson, Richard Bird, Stephen Blott, Tom Blenko, Duke Briscoe, Paul Callaghan, Magnus Carlsson, Mark Carroll, Manuel Chakravarty, Franklin Chen, Olaf Chitil, Chris Clack, Guy Cousineau, Tony Davie, Craig Dickson, Chris Dornan, Laura Dutton, Chris Fasel, Pat Fasel, Sigbjorn Finne, Michael Fryers, Andy Gill, Mike Gunter, Cordy Hall, Mark Hall, Thomas Hallgren, Matt Harden, Klemens Hemm, Fergus Henderson, Dean Herington, Ralf Hinze, Bob Hiromoto, Nic Holt, Ian Holyer, Randy Hudson, Alexander Jacobson, Patrik Jansson, Robert Jeschofnik, Orjan Johansen, Simon B. Jones, Stef Joosten, Mike Joy, Stefan Kahrs, Antti-Juhani Kaijanaho, Jerzy Karczmarczuk, Wolfram Kahl, Kent Karlsson, Richard Kelsey, Siau-Cheng Khoo, Amir Kishon, Feliks Kluzniak, Jan Kort, Marcin Kowalczyk, Jose Labra, Jeff Lewis, Mark Lillibridge, Bjorn Lisper, Sandra Loosemore, Pablo Lopez, Olaf Lubeck, Ian Lynagh, Christian Maeder, Ketil Malde, Simon Marlow, Michael Marte, Jim Mattson, John Meacham, Sergey Mechveliani, Gary Memovich, Randy Michelsen, Rick Mohr, Andy Moran, Graeme Moss, Henrik Nilsson, Arthur Norman, Nick North, Chris Okasaki, Bjarte M. Ostvold, Paul Otto, Sven Panne, Dave Parrott, Ross Paterson, Larne Pekowsky, Rinus Plasmeijer, Ian Poole, Stephen Price, John Robson, Andreas Rossberg, George Russell, Patrick Sansom, Michael Schneider, Felix Schroeter, Julian Seward, Nimish Shah, Christian Sievers, Libor Skarvada, Jan Skibinski, Lauren Smith, Raman Sundaresh, Josef Svenningsson, Ken Takusagawa, Satish Thatte, Simon Thompson, Tom Thomson, Tommy Thorn, Dylan Thurston, Mike Thyer, Mark Tullsen, David Tweed, Pradeep Varma, Malcolm Wallace, Keith Wansbrough, Tony Warnock, Michael Webber, Carl Witty, Stuart Wray и Bonnie Yantis.

Наконец, кроме важной основополагающей работы Россера (Rosser), Карри (Curry) и других, положенной в основу лямбда-исчисления, будет правильным признать влияние многих заслуживающих внимания языков программирования, разработанных за эти годы. Хотя трудно точно определить происхождение многих идей, следующие языки были особенно важны: Lisp (и его современные воплощения Common Lisp и Scheme), ISWIM Ландина (Landin), APL, FP[1] Бэкуса (Backus), ML и Standard ML, Hope и Hope +, Clean, Id, Gofer, Sisal и ряд языков Тернера (Turner), завершившиеся созданием Miranda (Miranda является торговой маркой Research Software Ltd.). Без этих предшественников Haskell был бы невозможен.

Саймон Пейтон Джонс (Simon Peyton Jones)
Кембридж, сентябрь 2002


Описание Haskell 98
наверх | назад | вперед | содержание | предметный указатель функций
Декабрь 2002