GHC поддерживает несколько версий языка: Haskell98, Haskell2010, GHC2021 и GHC2024. Каждая версия языка состоит из набора языковых расширений, и есть много других языковых расширений, которые в настоящее время не входят в состав версии языка, но которые можно явно включить.
В настоящее время GHC2021 используется по умолчанию, если явно не указана другая версия языка, в целях обратной совместимости. Поскольку в более поздних версиях GHC может использоваться другая версия языка по умолчанию, пользователям рекомендуется явно указывать версию языка. Рекомендуется использовать GHC2024 для нового кода.
Версию языка можно выбрать:
- на уровне пакета, например, используя
default-language: GHC2024в файле.cabal; - с помощью флага командной строки, начинающегося с «
-X...» (например,-XGHC2024); или - для отдельного модуля с помощью директивы
LANGUAGE, например,{-# LANGUAGE GHC2024 #-}.
Выбор версии языка переопределяет любой предыдущий выбор. Отключить версию языка невозможно.
Аналогично, языковые расширения можно контролировать (включать или отключать):
- на уровне пакета, например, используя
default-extensions: TemplateHaskellв файле.cabal; - с флагами командной строки, включенными флагом командной строки «
-X...» (например,-XTemplateHaskell), и выключенными флагом «-XNo...»; (например,-XNoTemplateHaskell); - для отдельного модуля с помощью директивы
LANGUAGE, например,{-# LANGUAGE TemplateHaskell #-}или{-# LANGUAGE NoTemplateHaskell #-}.
-
GHC2024 -
- Since:
-
9.10.1
GHC благословляет ряд расширений, выходящих за рамки Haskell 2010, чтобы сделать их подходящими для включения по умолчанию. Эти расширения считаются стабильными и консервативными.
Обратите внимание, что, поскольку GHC2024 включает в себя ряд нестандартизированных расширений, гарантии стабильности, которые он предоставляет, не так сильны, как, например, гарантии
Haskell2010. Хотя GHC прилагает все усилия, чтобы избежать изменения семантики этих расширений, изменения все же могут произойти (например, упрощенное изменение субсуммирования, внесенное в GHC 9.0, которое заставило GHC отклонять некоторые программы, использующиеRankNTypes).Версия языка
GHC2024включает следующие расширения: