2012-07-02 2 views
27

Когда я впервые узнал Haskell, Haskell '98 была официальной опубликованной спецификацией языка. Сегодня эта спецификация - Haskell 2010. (Должен признать, мне очень трудно вспомнить, каковы черты различий на самом деле.)Как Хаскелл изменился?

В настоящее время Haskell уже существует для долгое время. (Ну, в вычислительных терминах это долгое время.) Так что мне интересно ... Были ли какие-либо серьезные изменения в дизайне языка над историей Haskell? Или все изменения были относительно незначительными? Где-то я могу найти их список, не садясь и не просматривая каждую версию отчета Haskell, пытаясь определить различия?

+2

Там очень короткое резюме на [вики-страницы] (HTTP://en.wikipedia.org/wiki/Haskell_%28programming_language%29#History), что также приводит нас к объявлению о выпуске [Haskell 2010] (http://www.haskell.org/pipermail/haskell/2009-November/021750 .html), который немного больше информации об этой версии. – huon

+2

Система типов значительно расширилась. Фактически стандартом Haskell является GHC, с его широким разнообразием языковых расширений, многие из которых более или менее стандартизированы в наши дни. –

+0

Haskell не сильно изменился между H98 и Haskell 2010._Glasgow Haskell_ сильно изменился за это время. –

ответ

26

История языка, в том числе основных этапов и проектных решений, описывается в

@INPROCEEDINGS{Hudak07ahistory, 
    author = {Paul Hudak and John Hughes and Simon Peyton Jones and Philip Wadler}, 
    title = {A history of Haskell: Being lazy with class}, 
    booktitle = {In Proceedings of the 3rd ACM SIGPLAN Conference on History of Programming Languages (HOPL-III}, 
    year = {2007}, 
    pages = {1--55}, 
    publisher = {ACM Press} 
} 
+0

Похоже на это о лучшем источнике информации, написанной в настоящее время, - и, конечно же, это интересно читать по другим причинам. Поэтому я собираюсь принять этот ответ. – MathematicalOrchid

10

Эталонные Донс дает отличный и авторитетный до того, когда она заканчивается. Вот некоторые вещи с моей головы - в том числе вещи, которые были внесены в спецификацию, а также вещи, которые официально не включены в спецификацию, но которые я бы рассмотрел неэкспериментальные части GHC, которые другие компиляторы также часто стремятся предоставлять. Это также включает в себя классы и другие функции, которые мы теперь считаем стандартными, но которые не всегда были такими, но которые могут существовать исключительно как библиотеки.

  • Модулей Иерархических
  • Монады
  • НЛ Монада
  • Do нотация
  • Внешней функция Интерфейс
  • классы типа
  • Многопараметрических
  • неточных исключения
  • печатаемые и данные
  • Extensible Исключения
  • Функциональные зависимости
  • Тип функции
  • Параллельное Haskell
  • STM
  • GADTs
  • The Great Мономорфизм Катастрофу (т.е. потеря монадных постижений, карта специализировался в списки и т.д.)
  • Applicative и проходимой
  • Стрелки/Arrow Notation
  • MonadFix
+0

Обратите внимание, что многие из них находятся в документе HOPL: 8.2.1 Иерархические имена модулей; 8.1 Интерфейс внешних функций; 7.2 Монады; 7.3. Монадический ввод-вывод; 7.4 Последующие разработки (STM, неточные исключения и т. Д.). 6.7 GADT. Типичные семьи, я думаю, могут стать главной по-настоящему новой, поскольку бумага HOPL вышла. –

+0

Ха-ха-да, я уверен, что в этой статье я получил справедливую часть своей хронологии от ... – sclv

+5

Великая катастрофа мономорфизма :) По крайней мере, у нас есть монады-мысли в ghc. –

Смежные вопросы