Как Хаскелл изменился?
Когда я впервые узнал Haskell, Haskell '98 была официальной опубликованной спецификацией языка. Сегодня эта спецификация - Haskell 2010. (Должен признаться, мне очень трудно вспомнить, каковы черты различий на самом деле.)
Теперь Хаскелл существует уже давно. (Ну, в вычислительных терминах это долгое время.) Так что мне интересно... Были ли какие-либо серьезные изменения в дизайне языка над историей Haskell? Или все изменения были относительно незначительными? Где-то я могу найти их список, не садясь и не просматривая каждую версию отчета Haskell, пытаясь определить различия?
Ответы
Ответ 1
История языка, включая основные этапы и проектные решения, описана в
@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}
}
Ответ 2
Ссылка Dons дает отличную и авторитетную до того момента, когда она закончится. Здесь некоторые вещи с моей головы - в том числе вещи, которые были внесены в спецификацию, а также вещи, которые официально не включены в спецификацию, но которые я бы рассмотрел неэкспериментальные части GHC, которые другие компиляторы также часто стремятся предоставлять. Это также включает в себя классы и другие функции, которые мы теперь считаем стандартными, но которые не всегда были такими, но которые могут существовать исключительно как библиотеки.
- Иерархические модули
- Монады
- IO Monad
- Обозначать
- Интерфейс внешних функций
- Классы с несколькими параметрами
- Неточные исключения
- Тип и данные
- Расширяемые исключения
- Функциональные зависимости
- Функции типа
- Concurrent Haskell
- STM
- GADTs
- Великая катастрофа мономорфизма (т.е. потеря понимания монады, карта, специализирующаяся на списках и т.д.).
- Аппликативная и перемещаемая
- Знаки стрелок/стрелок
- MonadFix