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

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

DoAndIfThenElse

Позволяет использовать точки с запятой в выражениях if.

DuplicateRecordFields

Позволяет определять типы записей с полями, имеющими одинаковые имена.

EmptyCase

Позволяет использовать выражения case без альтернатив.

EmptyDataDecls

Позволяет определять пустые типы data.

EmptyDataDeriving

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

ExistentialQuantification

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

ExplicitForAll

Позволяет явно задавать всеобщую квантификацию.

ExplicitLevelImports

Позволяет явно задавать уровни импортов в Template Haskell.

ExplicitNamespaces

Позволяет использовать ключевые слова type и data для указания пространства имён элементов в списках импорта и экспорта, а также в других контекстах.

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.

ImplicitStagePersistence

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

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

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

RankNTypes

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

RebindableSyntax

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

RecordWildCards

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

RecursiveDo

Позволяет использовать рекурсивную do-нотацию (например, mdo).

RequiredTypeArguments

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

RoleAnnotations

Позволяет использовать синтаксис аннотаций ролей.

Safe

Включает безопасный режим 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

Включает режим Trustworthy в Safe Haskell.

TupleSections

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

TypeAbstractions

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

TypeApplications

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

TypeData

Позволяет использовать объявления type data.

TypeFamilies

Позволяет определять семейства типов.

TypeFamilyDependencies

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

TypeInType

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

TypeOperators

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

TypeSynonymInstances

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

UnboxedSums

Позволяет использовать синтаксис неупакованных сумм.

UnboxedTuples

Позволяет использовать синтаксис неупакованных кортежей.

UndecidableInstances

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

UndecidableSuperClasses

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

UnicodeSyntax

Включает синтаксис Unicode.

UnliftedDatatypes

Позволяет определять непродвигаемые типы данных.

UnliftedFFITypes

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

UnliftedNewtypes

Позволяет определять непродвигаемые newtype-типы.

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.14.1/docs/users_guide/exts/table.html

Spec-Zone.ru

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