Spec-Zone.ru › Haskell 9

6.1.2. Обзор всех расширений языка

GHC поддерживает следующие расширения языка:

Расширение Описание

AllowAmbiguousTypes

Разрешить пользователю писать неопределенные типы, а механизму вывода типов — выводить их.

ApplicativeDo

Разрешить десахаризацию инструкций do-нотации с помощью Applicative.

Arrows

Разрешить стрелочную нотацию (например, proc).

BangPatterns

Разрешить синтаксис паттернов с восклицательным знаком.

BinaryLiterals

Разрешить синтаксис двоичных литералов.

BlockArguments

Разрешить блоки do и другие конструкции в качестве аргументов функций.

CApiFFI

Разрешить объявление foreign import, используя соглашение о вызове capi.

ConstrainedClassMethods

Разрешить методам классов иметь непустые контексты.

ConstraintKinds

Разрешить использовать ограничения в качестве типов вида Constraint.

CPP

Обработка директив препроцессора C.

CUSKs

Обнаружение полных пользовательских сигнатур видов.

DataKinds

Разрешить использование конструкторов данных в типах.

DatatypeContexts

Разрешить контексты для типов data.

DeepSubsumption

Использовать проверку глубокой подстановки GHC.

DefaultSignatures

Разрешить сигнатуры по умолчанию для методов типов.

DeriveAnyClass

Разрешить использовать синтаксис deriving для любого класса.

DeriveDataTypeable

Разрешить вывод для класса Data.

DeriveFoldable

Разрешить вывод для класса Foldable.

DeriveFunctor

Разрешить вывод для класса Functor.

DeriveGeneric

Разрешить вывод экземпляров Generic.

DeriveLift

Разрешить вывод для класса Lift.

DeriveTraversable

Разрешить вывод для класса Traversable.

DerivingStrategies

Разрешить использование стратегий вывода экземпляров.

DerivingVia

Разрешить вывод экземпляров для типов с одинаковой реализацией во время выполнения via.

DisambiguateRecordFields

Автоматически устранять неоднозначность некоторых ссылок на поля записей.

DuplicateRecordFields

Разрешить определение типов записей с одинаково названными полями.

EmptyCase

Разрешить выражения case без альтернатив.

EmptyDataDecls

Разрешить определение пустых типов data.

EmptyDataDeriving

Разрешить вывод экземпляров стандартных классов типов для пустых типов данных.

ExistentialQuantification

Разрешить экзистенциально квантифицированные переменные типа в типах.

ExplicitForAll

Разрешить явную универсальную квантификацию.

ExplicitNamespaces

Разрешить использование ключевого слова type для указания пространства имен записей в импортах и экспортах.

ExtendedDefaultRules

Использовать расширенные правила по умолчанию GHCi в обычном модуле.

ExtendedLiterals

Разрешить синтаксис постфикса числовых литералов для нераспакованных целых чисел.

FieldSelectors

Сделать функции селекторов полей записей видимыми в выражениях.

FlexibleContexts

Убрать некоторые ограничения на контексты классов.

FlexibleInstances

Разрешить заголовкам экземпляров упоминать произвольные вложенные типы.

ForeignFunctionInterface

Разрешить синтаксис интерфейса внешних функций.

FunctionalDependencies

Разрешить указание функциональных зависимостей в объявлениях типов.

GADTs

Разрешить определение обобщенных алгебраических типов данных.

GADTSyntax

Разрешить синтаксис обобщенных алгебраических типов данных.

GeneralisedNewtypeDeriving

Разрешить вывод экземпляров с помощью вывода newtype.

GHC2021

Использовать набор расширений языка GHC по умолчанию с 2021 года.

GHC2024

Использовать набор расширений языка GHC по умолчанию с 2024 года.

GHCForeignImportPrim

Разрешить соглашение о вызове prim. Предназначено только для внутреннего использования.

Haskell2010

Использовать редакцию языка Haskell 2010.

Haskell98

Использовать редакцию языка Haskell 98.

HexFloatLiterals

Разрешить синтаксис шестнадцатеричных литералов с плавающей точкой.

ImplicitParams

Разрешить ограничения неявных параметров.

ImplicitPrelude

Неявно импортировать Prelude.

ImportQualifiedPost

Разрешает синтаксис import M qualified.

ImpredicativeTypes

Разрешить импредикативные типы.

IncoherentInstances

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

InstanceSigs

Разрешить запись сигнатур типов для методов экземпляров.

InterruptibleFFI

Разрешить импорты interruptible FFI.

KindSignatures

Разрешить задание сигнатур видов для типов.

LambdaCase

Разрешить выражения \case.

LexicalNegation

Использовать пробелы для определения, является ли знак минус оператором отрицания или вычитания.

LiberalTypeSynonyms

Смягчить многие правила Haskell 98 для определений синонимов типов.

LinearTypes

Разрешить запись линейных стрелочных типов. Подразумевает MonoLocalBinds.

ListTuplePuns

Включить использование сокращений для типов списков, кортежей и сумм.

MagicHash

Разрешить # в качестве постфиксного модификатора идентификаторов.

MonadComprehensions

Разрешить использование синтаксиса списков вложенных в монады, отличные от List.

MonoLocalBinds

Не обобщать типы локальных связей.

MonomorphismRestriction

Применить ограничение мономорфизма Haskell 2010.

MultilineStrings

Включить многострочные строковые литералы.

MultiParamTypeClasses

Включить многопараметрические классы типов.

MultiWayIf

Разрешить многоуровневые выражения if.

NamedDefaults

Включить объявления default с явно указанным именем класса.

NamedFieldPuns

Разрешить синтаксис сокращений для полей записей.

NamedWildCards

Разрешить именованные дикие карты в типах.

NegativeLiterals

Разрешить синтаксис отрицательных числовых литералов.

NondecreasingIndentation

Разрешить вложенным контекстам быть на одном уровне отступа с окружающим контекстом.

NPlusKPatterns

Разрешить использование n+k шаблонов.

NullaryTypeClasses

Устарело, ничего не делает. Нульарные классы типов теперь включены с использованием MultiParamTypeClasses.

NumDecimals

Разрешить использование научной записи для целочисленных литералов.

NumericUnderscores

Разрешить использовать подчеркивания в числовых литералах.

OrPatterns

Включить шаблоны "или".

OverlappingInstances

Разрешить определение перекрывающихся экземпляров.

OverloadedLabels

Разрешить синтаксис перегруженных меток.

OverloadedLists

Раскрыть синтаксис списков через класс IsList.

OverloadedRecordDot

Разрешить использование . для доступа к полям записей.

OverloadedRecordUpdate

Разрешить синтаксис . в обновлениях записей

OverloadedStrings

Раскрыть строковые литералы через класс IsString.

PackageImports

Разрешить синтаксис импорта с квалификацией пакета import.

ParallelListComp

Разрешить синтаксис параллельных списков вложенных в списки.

PartialTypeSignatures

Разрешить типы сигнатур, содержащие подстановочные знаки.

PatternGuards

Разрешить синтаксис шаблонов-условий.

PatternSynonyms

Разрешить определение синонимов шаблонов.

PolyKinds

Разрешить полиморфизм типов.

PostfixOperators

Разрешить использование постфиксных операторов.

QualifiedDo

Разрешить раскрытие квалифицированного синтаксиса do.

QuantifiedConstraints

Разрешить квантификаторы forall в ограничениях.

QuasiQuotes

Разрешить синтаксис квазицитирования.

Rank2Types

Включить типы ранга 2.

RankNTypes

Разрешить типы ранга больше одного.

RebindableSyntax

Разрешить повторное связывание встроенного синтаксиса.

RecordWildCards

Разрешить использование синтаксиса диких карт для записей.

RecursiveDo

Разрешить рекурсивный синтаксис do (например, mdo) .

RequiredTypeArguments

Разрешить использование синтаксиса обязательных аргументов типа в терминах.

RoleAnnotations

Разрешить синтаксис аннотаций ролей.

Safe

Включить режим Безопасный Haskell.

ScopedTypeVariables

Разрешить лексическое пространство для явно введенных переменных типа.

StandaloneDeriving

Разрешить объявления самостоятельного вывода экземпляров.

StandaloneKindSignatures

Разрешить объявления самостоятельных сигнатур типов.

StarIsType

Рассматривать * как Data.Kind.Type.

StaticPointers

Разрешить синтаксис static.

Strict

Сделать связи в текущем модуле строгими по умолчанию.

StrictData

Считать поля типов данных строгими по умолчанию.

TemplateHaskell

Разрешить синтаксис вставки и цитирования Template Haskell.

TemplateHaskellQuotes

Разрешить синтаксис цитирования Template Haskell.

TraditionalRecordSyntax

Разрешить традиционный синтаксис записей (например, C {f = x}).

TransformListComp

Разрешить обобщенный синтаксис списков с выражениями.

Trustworthy

Включить режим «Надежный» в Safe Haskell.

TupleSections

Разрешить использование синтаксиса секций кортежей.

TypeAbstractions

Разрешить синтаксис абстракции типов в шаблонах и связывающих переменных типов.

TypeApplications

Разрешить синтаксис применения типов в выражениях и типах.

TypeData

Разрешить объявления type data.

TypeFamilies

Разрешить определение семейств типов.

TypeFamilyDependencies

Разрешить аннотации инъективности для семейств типов.

TypeInType

Устаревшее. Включить полиморфизм видов и повышение типов данных.

TypeOperators

Разрешить конструкторам типов имена операторов.

TypeSynonymInstances

Разрешить упоминание синонимов типов в заголовках экземпляров.

UnboxedSums

Разрешить использование синтаксиса необрамленных сумм.

UnboxedTuples

Разрешить использование синтаксиса необрамленных кортежей.

UndecidableInstances

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

UndecidableSuperClasses

Разрешить все ограничения суперклассов, включая те, которые могут привести к зависанию типового анализатора.

UnicodeSyntax

Включить синтаксис юникода.

UnliftedDatatypes

Разрешить определение необрамленных типов данных.

UnliftedFFITypes

Разрешить типы внешних импортов, содержащие определенные необрамленные типы.

UnliftedNewtypes

Разрешить определение необрамленных новых типов.

Unsafe

Включить режим «Небезопасный» в Safe Haskell.

ViewPatterns

Разрешить синтаксис шаблонов представлений.

© 2002–2007 The University Court of the University of Glasgow. All rights reserved.
Licensed under the Glasgow Haskell Compiler License.
https://downloads.haskell.org/~ghc/9.12.1/docs/users_guide/exts/table.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API