GHC поддерживает следующие языковые расширения:
| Расширение | Описание |
|---|---|
Позволяет пользователю записывать неоднозначные типы, а механизму вывода типов — выводить их. | |
Позволяет преобразовывать выражения с do-нотацией в | |
Позволяет использовать нотацию стрелок (например, | |
Позволяет использовать синтаксис строгих образцов. | |
Позволяет использовать синтаксис двоичных литералов. | |
Позволяет использовать блоки | |
Позволяет объявлять | |
Позволяет методам классов иметь непустые контексты. | |
Позволяет использовать ограничения в качестве типов с видом | |
Обрабатывает директивы препроцессора C. | |
Обнаруживает полные пользовательские сигнатуры видов. | |
Позволяет использовать конструкторы данных в типах. | |
Позволяет задавать контексты для типов | |
Использует проверку глубокой субсумпции в GHC. | |
Позволяет задавать сигнатуры по умолчанию для методов классов типов. | |
Позволяет использовать синтаксис | |
Позволяет автоматически выводить экземпляры класса | |
Позволяет автоматически выводить экземпляры класса | |
Позволяет автоматически выводить экземпляры класса | |
Позволяет автоматически выводить экземпляры | |
Позволяет автоматически выводить экземпляры класса | |
Позволяет автоматически выводить экземпляры класса | |
Позволяет использовать стратегии автоматического вывода экземпляров. | |
Позволяет автоматически выводить экземпляры для типов | |
Автоматически устраняет неоднозначность некоторых ссылок на поля записей. | |
Позволяет использовать точки с запятой в выражениях | |
Позволяет определять типы записей с полями, имеющими одинаковые имена. | |
Позволяет использовать выражения | |
Позволяет определять пустые типы | |
Позволяет автоматически выводить экземпляры стандартных классов типов для пустых типов данных. | |
Позволяет использовать экзистенциально квантифицированные переменные типов в типах. | |
Позволяет явно задавать всеобщую квантификацию. | |
Позволяет явно задавать уровни импортов в Template Haskell. | |
Позволяет использовать ключевые слова | |
Использует расширенные правила вывода типов по умолчанию из GHCi в обычном модуле. | |
Позволяет использовать постфиксный синтаксис числовых литералов для целых чисел без указателя. | |
Делает функции-селекторы полей записей видимыми в выражениях. | |
Снимает некоторые ограничения на контексты классов. | |
Позволяет упоминать произвольные вложенные типы в заголовках экземпляров. | |
Позволяет использовать синтаксис интерфейса внешних функций. | |
Позволяет задавать функциональные зависимости в объявлениях классов типов. | |
Позволяет определять обобщённые алгебраические типы данных. | |
Позволяет использовать синтаксис обобщённых алгебраических типов данных. | |
Позволяет выводить экземпляры с помощью | |
Использует набор языковых расширений GHC, принятый по умолчанию в 2021 году. | |
Использует набор языковых расширений GHC, принятый по умолчанию в 2024 году. | |
Позволяет использовать соглашение о вызовах | |
Использует языковую редакцию Haskell 2010. | |
Использует языковую редакцию Haskell 98. | |
Позволяет использовать синтаксис шестнадцатеричных литералов с плавающей точкой. | |
Позволяет использовать ограничения на неявные параметры. | |
Неявно импортирует | |
Позволяет использовать идентификаторы на уровнях, отличных от уровня, на котором они определены. | |
Позволяет использовать синтаксис | |
Позволяет использовать импредикативные типы. | |
Позволяет определять экземпляры, которые могут привести к несогласованности. | |
Позволяет задавать сигнатуры типов для методов экземпляров. | |
Позволяет использовать | |
Позволяет задавать сигнатуры видов для типов. | |
Позволяет использовать выражения | |
Использует пробелы, чтобы определять, обозначает ли знак минус отрицание или вычитание. | |
Ослабляет многие правила Haskell 98, касающиеся определений синонимов типов. | |
Позволяет записывать линейные типы стрелок. Включает | |
Включает сокращённую запись для типов списков, кортежей и сумм. | |
Позволяет использовать | |
Позволяет использовать синтаксис списковых включений для монад, отличных от | |
Не обобщает типы локальных связок. | |
Применяет ограничение мономорфизма из Haskell 2010. | |
Включает многострочные строковые литералы. | |
Включает многопараметрические классы типов. | |
Позволяет использовать многоальтернативные выражения | |
Включает объявления | |
Позволяет использовать сокращённый синтаксис полей записей. | |
Позволяет использовать именованные подстановочные знаки в типах. | |
Позволяет использовать синтаксис отрицательных числовых литералов. | |
Позволяет размещать вложенные контексты на том же уровне отступа, что и содержащий их контекст. | |
Позволяет использовать образцы | |
Устарело, ничего не делает. Классы типов без параметров теперь включаются с помощью | |
Позволяет использовать научную нотацию для целочисленных литералов. | |
Позволяет использовать подчёркивания в числовых литералах. | |
Включает альтернативные образцы. | |
Позволяет определять перекрывающиеся экземпляры. | |
Позволяет использовать синтаксис перегруженных меток. | |
Преобразует синтаксис списков с помощью класса | |
Позволяет использовать | |
Позволяет использовать синтаксис | |
Преобразует строковые литералы с помощью класса | |
Позволяет использовать синтаксис | |
Позволяет использовать синтаксис параллельных списковых включений. | |
Позволяет использовать подстановочные знаки в сигнатурах типов. | |
Позволяет использовать синтаксис проверок с образцами. | |
Позволяет определять синонимы образцов. | |
Позволяет использовать полиморфизм по видам. | |
Позволяет использовать постфиксные операторы. | |
Позволяет преобразовывать квалифицированную | |
Позволяет использовать кванторы | |
Позволяет использовать синтаксис квазицитирования. | |
Включает типы второго ранга. | |
Позволяет использовать типы ранга выше первого. | |
Позволяет переопределять встроенный синтаксис. | |
Позволяет использовать синтаксис подстановочных знаков для записей. | |
Позволяет использовать рекурсивную do-нотацию (например, | |
Позволяет использовать синтаксис обязательных аргументов типов в выражениях. | |
Позволяет использовать синтаксис аннотаций ролей. | |
Включает безопасный режим Safe Haskell. | |
Ограничивает область видимости явно введённых переменных типов лексической областью. | |
Позволяет объявлять автоматический вывод экземпляров отдельно. | |
Позволяет объявлять сигнатуры видов отдельно. | |
Интерпретирует | |
Позволяет использовать синтаксис | |
По умолчанию делает строгими связки в текущем модуле. | |
По умолчанию рассматривает поля типов данных как строгие. | |
Позволяет использовать синтаксис вставок и цитирования Template Haskell. | |
Позволяет использовать синтаксис цитирования Template Haskell. | |
Позволяет использовать традиционный синтаксис записей (например, | |
Позволяет использовать синтаксис обобщённых списковых включений. | |
Включает режим Trustworthy в Safe Haskell. | |
Позволяет использовать синтаксис секций кортежей. | |
Позволяет использовать синтаксис абстрагирования типов в образцах и связках переменных типов. | |
Позволяет использовать синтаксис применения типов в выражениях и типах. | |
Позволяет использовать объявления | |
Позволяет определять семейства типов. | |
Позволяет задавать аннотации инъективности для семейств типов. | |
Устарело. Включает полиморфизм по видам и продвижение типов данных. | |
Позволяет задавать конструкторам типов имена операторов. | |
Позволяет упоминать синонимы типов в заголовках экземпляров. | |
Позволяет использовать синтаксис неупакованных сумм. | |
Позволяет использовать синтаксис неупакованных кортежей. | |
Позволяет определять экземпляры, которые могут сделать разрешение ограничений неразрешимой задачей. | |
Позволяет использовать любые ограничения суперклассов, включая те, которые могут привести к бесконечной работе проверки типов. | |
Включает синтаксис Unicode. | |
Позволяет определять непродвигаемые типы данных. | |
Позволяет использовать некоторые непродвигаемые типы в типах внешних импортов. | |
Позволяет определять непродвигаемые newtype-типы. | |
Включает небезопасный режим Safe Haskell. | |
Позволяет использовать синтаксис образцов-представлений. |