{-# Language DataKinds, DeriveDataTypeable, FlexibleContexts, FlexibleInstances,
MultiParamTypeClasses, OverloadedStrings, StandaloneDeriving,
TemplateHaskell, TypeFamilies, TypeOperators, UndecidableInstances #-}
module Language.Haskell.Extensions.AST (Language(Language),
Export(..), Import(..), ImportItem(..), Members(..), ModuleMember(..),
Declaration(..), DataConstructor(..), GADTConstructor(..),
FunctionalDependency(..), PatternEquationClause(..),
DerivingClause(..), DerivingStrategy(..),
Expression(..), Pattern(..), PatternLHS(..), PatternEquationLHS(..),
FieldBinding(..), FieldPattern(..),
Statement(..), LambdaCasesAlternative(..),
ClassInstanceLHS(..), Context(..),
Type(..), TypeLHS(..), TypeVarBinding(..), TypeRole(..),
Constructor(..), Value(..),
CallSafety(..), CallingConvention(..),
module Report) where
import Control.Monad (forM)
import qualified Data.List as List
import Data.List.NonEmpty (NonEmpty, toList)
import Data.Data (Data, Typeable)
import qualified Data.Kind as Kind
import Data.Text (Text)
import qualified Language.Haskell.Extensions as Extensions
import qualified Language.Haskell.Extensions.Abstract as Abstract
import qualified Language.Haskell.AST as Report
import Language.Haskell.AST (Module(..), EquationLHS(..), EquationRHS(..), GuardedExpression(..),
FieldDeclaration(..), CaseAlternative(..),
Associativity(..),
Name(..), ModuleName(..), QualifiedName(..),
ImportSpecification(..))
import qualified Rank2.TH
import qualified Transformation.Deep as Deep
import qualified Transformation.Deep.TH
import qualified Transformation.Shallow.TH
data Language = Language deriving (Typeable Language
Typeable Language =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Language -> c Language)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Language)
-> (Language -> Constr)
-> (Language -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Language))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Language))
-> ((forall b. Data b => b -> b) -> Language -> Language)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Language -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Language -> r)
-> (forall u. (forall d. Data d => d -> u) -> Language -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Language -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Language -> m Language)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Language -> m Language)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Language -> m Language)
-> Data Language
Language -> Constr
Language -> DataType
(forall b. Data b => b -> b) -> Language -> Language
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Language -> u
forall u. (forall d. Data d => d -> u) -> Language -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Language -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Language -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Language -> m Language
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Language -> m Language
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Language
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Language -> c Language
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Language)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Language)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Language -> c Language
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Language -> c Language
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Language
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Language
$ctoConstr :: Language -> Constr
toConstr :: Language -> Constr
$cdataTypeOf :: Language -> DataType
dataTypeOf :: Language -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Language)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Language)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Language)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Language)
$cgmapT :: (forall b. Data b => b -> b) -> Language -> Language
gmapT :: (forall b. Data b => b -> b) -> Language -> Language
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Language -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Language -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Language -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Language -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Language -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> Language -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Language -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Language -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Language -> m Language
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Language -> m Language
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Language -> m Language
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Language -> m Language
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Language -> m Language
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Language -> m Language
Data, Language -> Language -> Bool
(Language -> Language -> Bool)
-> (Language -> Language -> Bool) -> Eq Language
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Language -> Language -> Bool
== :: Language -> Language -> Bool
$c/= :: Language -> Language -> Bool
/= :: Language -> Language -> Bool
Eq, Int -> Language -> ShowS
[Language] -> ShowS
Language -> String
(Int -> Language -> ShowS)
-> (Language -> String) -> ([Language] -> ShowS) -> Show Language
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Language -> ShowS
showsPrec :: Int -> Language -> ShowS
$cshow :: Language -> String
show :: Language -> String
$cshowList :: [Language] -> ShowS
showList :: [Language] -> ShowS
Show)
type instance Abstract.ExtensionsSupportedBy Language = '[
'Extensions.ExplicitNamespaces,
'Extensions.ExtendedLiterals,
'Extensions.MagicHash,
'Extensions.NamedFieldPuns,
'Extensions.ParallelListComprehensions,
'Extensions.RecordWildCards,
'Extensions.RecursiveDo,
'Extensions.QualifiedDo,
'Extensions.LambdaCase,
'Extensions.ImplicitParameters,
'Extensions.TupleSections,
'Extensions.UnboxedSums,
'Extensions.UnboxedTuples,
'Extensions.InterruptibleFFI,
'Extensions.CApiFFI,
'Extensions.StrictData,
'Extensions.Strict,
'Extensions.BangPatterns,
'Extensions.ViewPatterns,
'Extensions.NPlusKPatterns,
'Extensions.PatternSynonyms,
'Extensions.NamedDefaults,
'Extensions.StandaloneDeriving,
'Extensions.DerivingStrategies,
'Extensions.DerivingVia,
'Extensions.DefaultSignatures,
'Extensions.GADTs,
'Extensions.TypeAbstractions,
'Extensions.TypeData,
'Extensions.FunctionalDependencies]
instance Abstract.ExtendedWith '[ 'Extensions.ExplicitNamespaces ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'ExplicitNamespaces] Language l d s
build = Abstract.ExplicitNamespacesConstruction {
explicitlyNamespacedMemberList :: [ModuleMember Language] -> Members Language
Abstract.explicitlyNamespacedMemberList = SupportFor 'ExplicitNamespaces Language
-> [ModuleMember Language] -> Members Language
forall λ.
SupportFor 'ExplicitNamespaces λ -> [ModuleMember λ] -> Members λ
ExplicitlyNamespacedMemberList (),
defaultMember :: Name Language -> ModuleMember Language
Abstract.defaultMember = Name Language -> ModuleMember Language
Name Language -> ModuleMember Language
forall λ. Name λ -> ModuleMember λ
DefaultMember,
patternMember :: Name Language -> ModuleMember Language
Abstract.patternMember = Name Language -> ModuleMember Language
Name Language -> ModuleMember Language
forall λ. Name λ -> ModuleMember λ
PatternMember,
typeMember :: Name Language -> ModuleMember Language
Abstract.typeMember = Name Language -> ModuleMember Language
Name Language -> ModuleMember Language
forall λ. Name λ -> ModuleMember λ
TypeMember,
explicitTypeFixityDeclaration :: Associativity Language
-> Maybe Int
-> NonEmpty (Name Language)
-> Declaration Language l d s
Abstract.explicitTypeFixityDeclaration = SupportFor 'ExplicitNamespaces Language
-> Associativity Language
-> Maybe Int
-> NonEmpty (Name Language)
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ExplicitNamespaces λ
-> Associativity λ
-> Maybe Int
-> NonEmpty (Name λ)
-> Declaration λ l d s
ExplicitTypeFixityDeclaration (),
explicitDataFixityDeclaration :: Associativity Language
-> Maybe Int
-> NonEmpty (Name Language)
-> Declaration Language l d s
Abstract.explicitDataFixityDeclaration = SupportFor 'ExplicitNamespaces Language
-> Associativity Language
-> Maybe Int
-> NonEmpty (Name Language)
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ExplicitNamespaces λ
-> Associativity λ
-> Maybe Int
-> NonEmpty (Name λ)
-> Declaration λ l d s
ExplicitDataFixityDeclaration (),
explicitTypeExpression :: s (Type l l d d) -> Expression Language l d s
Abstract.explicitTypeExpression = SupportFor 'ExplicitNamespaces Language
-> s (Type l l d d) -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ExplicitNamespaces λ
-> s (Type l l d d) -> Expression λ l d s
ExplicitTypeExpression (),
explicitTypePattern :: s (Type l l d d) -> Pattern Language l d s
Abstract.explicitTypePattern = SupportFor 'ExplicitNamespaces Language
-> s (Type l l d d) -> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ExplicitNamespaces λ
-> s (Type l l d d) -> Pattern λ l d s
ExplicitTypePattern ()}
instance Abstract.ExtendedWith '[ 'Extensions.MagicHash ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'MagicHash] Language l d s
build = Abstract.MagicHashConstruction {
hashLiteral' :: Value Language l d s -> Value Language l d s
Abstract.hashLiteral' = SupportFor 'MagicHash Language
-> Value Language l d s -> Value Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'MagicHash λ -> Value λ l d s -> Value λ l d s
HashLiteral ()}
instance Abstract.ExtendedWith '[ 'Extensions.NamedFieldPuns ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'NamedFieldPuns] Language l d s
build = Abstract.NamedFieldPunsConstruction {
punnedFieldBinding' :: QualifiedName Language -> FieldBinding Language l d s
Abstract.punnedFieldBinding' = QualifiedName Language -> FieldBinding Language l d s
QualifiedName Language -> FieldBinding Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> FieldBinding λ l d s
PunnedFieldBinding,
punnedFieldPattern' :: QualifiedName Language -> FieldPattern Language l d s
Abstract.punnedFieldPattern' = QualifiedName Language -> FieldPattern Language l d s
QualifiedName Language -> FieldPattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> FieldPattern λ l d s
PunnedFieldPattern}
instance Abstract.ExtendedWith '[ 'Extensions.ParallelListComprehensions ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'ParallelListComprehensions] Language l d s
build = Abstract.ParallelListComprehensionConstruction {
parallelListComprehension' :: s (Expression l l d d)
-> NonEmpty (s (Statement l l d d))
-> NonEmpty (s (Statement l l d d))
-> [NonEmpty (s (Statement l l d d))]
-> Expression Language l d s
Abstract.parallelListComprehension' = s (Expression l l d d)
-> NonEmpty (s (Statement l l d d))
-> NonEmpty (s (Statement l l d d))
-> [NonEmpty (s (Statement l l d d))]
-> Expression Language l d s
s (Expression l l d d)
-> NonEmpty (s (Statement l l d d))
-> NonEmpty (s (Statement l l d d))
-> [NonEmpty (s (Statement l l d d))]
-> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> NonEmpty (s (Statement l l d d))
-> NonEmpty (s (Statement l l d d))
-> [NonEmpty (s (Statement l l d d))]
-> Expression λ l d s
ParallelListComprehension}
instance Abstract.ExtendedWith '[ 'Extensions.RecordWildCards ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'RecordWildCards] Language l d s
build = Abstract.RecordWildCardConstruction {
wildcardRecordExpression' :: QualifiedName Language
-> [s (FieldBinding l l d d)] -> Expression Language l d s
Abstract.wildcardRecordExpression' = SupportFor 'RecordWildCards Language
-> QualifiedName Language
-> [s (FieldBinding l l d d)]
-> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'RecordWildCards λ
-> QualifiedName λ
-> [s (FieldBinding l l d d)]
-> Expression λ l d s
WildcardRecordExpression (),
wildcardRecordPattern' :: QualifiedName Language
-> [s (FieldPattern l l d d)] -> Pattern Language l d s
Abstract.wildcardRecordPattern' = SupportFor 'RecordWildCards Language
-> QualifiedName Language
-> [s (FieldPattern l l d d)]
-> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'RecordWildCards λ
-> QualifiedName λ -> [s (FieldPattern l l d d)] -> Pattern λ l d s
WildcardRecordPattern ()}
instance Abstract.ExtendedWith '[ 'Extensions.RecursiveDo ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'RecursiveDo] Language l d s
build = Abstract.RecursiveDoConstruction {
mdoExpression' :: s (GuardedExpression l l d d) -> Expression Language l d s
Abstract.mdoExpression' = s (GuardedExpression l l d d) -> Expression Language l d s
s (GuardedExpression l l d d) -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (GuardedExpression l l d d) -> Expression λ l d s
MDoExpression,
recursiveStatement' :: [s (Statement l l d d)] -> Statement Language l d s
Abstract.recursiveStatement' = [s (Statement l l d d)] -> Statement Language l d s
[s (Statement l l d d)] -> Statement Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[s (Statement l l d d)] -> Statement λ l d s
RecursiveStatement}
instance Abstract.ExtendedWith '[ 'Extensions.QualifiedDo ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'QualifiedDo] Language l d s
build = Abstract.QualifiedDoConstruction {
qualifiedDoExpression :: ModuleName Language
-> s (GuardedExpression l l d d) -> Expression Language l d s
Abstract.qualifiedDoExpression = SupportFor 'QualifiedDo Language
-> ModuleName Language
-> s (GuardedExpression l l d d)
-> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'QualifiedDo λ
-> ModuleName λ
-> s (GuardedExpression l l d d)
-> Expression λ l d s
QualifiedDoExpression ()}
instance Abstract.ExtendedWith '[ 'Extensions.QualifiedDo, 'Extensions.RecursiveDo ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'QualifiedDo, 'RecursiveDo] Language l d s
build = Abstract.QualifiedRecursiveDoConstruction {
mdoQualifiedExpression :: ModuleName Language
-> s (GuardedExpression l l d d) -> Expression Language l d s
Abstract.mdoQualifiedExpression = SupportFor 'QualifiedDo Language
-> SupportFor 'RecursiveDo Language
-> ModuleName Language
-> s (GuardedExpression l l d d)
-> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'QualifiedDo λ
-> SupportFor 'RecursiveDo λ
-> ModuleName λ
-> s (GuardedExpression l l d d)
-> Expression λ l d s
MDoQualifiedExpression () ()}
instance Abstract.ExtendedWith '[ 'Extensions.LambdaCase ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'LambdaCase] Language l d s
build = Abstract.LambdaCaseConstruction {
lambdaCaseExpression :: [s (CaseAlternative l l d d)] -> Expression Language l d s
Abstract.lambdaCaseExpression = SupportFor 'LambdaCase Language
-> [s (CaseAlternative l l d d)] -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'LambdaCase λ
-> [s (CaseAlternative l l d d)] -> Expression λ l d s
LambdaCaseExpression (),
lambdaCasesExpression :: [s (LambdaCasesAlternative l l d d)] -> Expression Language l d s
Abstract.lambdaCasesExpression = SupportFor 'LambdaCase Language
-> [s (LambdaCasesAlternative l l d d)]
-> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'LambdaCase λ
-> [s (LambdaCasesAlternative l l d d)] -> Expression λ l d s
LambdaCasesExpression (),
lambdaCasesAlternative :: [s (Pattern l l d d)]
-> s (EquationRHS l l d d) -> LambdaCasesAlternative Language l d s
Abstract.lambdaCasesAlternative = SupportFor 'LambdaCase Language
-> [s (Pattern l l d d)]
-> s (EquationRHS l l d d)
-> LambdaCasesAlternative Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'LambdaCase λ
-> [s (Pattern l l d d)]
-> s (EquationRHS l l d d)
-> LambdaCasesAlternative λ l d s
LambdaCasesAlternative ()}
instance Abstract.ExtendedWith '[ 'Extensions.TupleSections ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'TupleSections] Language l d s
build = Abstract.TupleSectionConstruction {
tupleSectionExpression' :: NonEmpty (Maybe (s (Expression l l d d)))
-> Expression Language l d s
Abstract.tupleSectionExpression' = NonEmpty (Maybe (s (Expression l l d d)))
-> Expression Language l d s
NonEmpty (Maybe (s (Expression l l d d)))
-> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (Maybe (s (Expression l l d d))) -> Expression λ l d s
TupleSectionExpression}
instance Abstract.ExtendedWith '[ 'Extensions.UnboxedTuples ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'UnboxedTuples] Language l d s
build = Abstract.UnboxedTuplesConstruction {
unboxedTupleType :: NonEmpty (s (Type l l d d)) -> Type Language l d s
Abstract.unboxedTupleType = SupportFor 'UnboxedTuples Language
-> NonEmpty (s (Type l l d d)) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedTuples λ
-> NonEmpty (s (Type l l d d)) -> Type λ l d s
UnboxedTupleType (),
unboxedTupleConstructor :: Int -> Constructor Language l d s
Abstract.unboxedTupleConstructor = SupportFor 'UnboxedTuples Language
-> Int -> Constructor Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedTuples λ -> Int -> Constructor λ l d s
UnboxedTupleConstructor (),
unboxedTupleExpression :: NonEmpty (s (Expression l l d d)) -> Expression Language l d s
Abstract.unboxedTupleExpression = SupportFor 'UnboxedTuples Language
-> NonEmpty (s (Expression l l d d)) -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedTuples λ
-> NonEmpty (s (Expression l l d d)) -> Expression λ l d s
UnboxedTupleExpression (),
unboxedTupleSectionExpression :: NonEmpty (Maybe (s (Expression l l d d)))
-> Expression Language l d s
Abstract.unboxedTupleSectionExpression = SupportFor 'UnboxedTuples Language
-> NonEmpty (Maybe (s (Expression l l d d)))
-> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedTuples λ
-> NonEmpty (Maybe (s (Expression l l d d))) -> Expression λ l d s
UnboxedTupleSectionExpression (),
unboxedTuplePattern :: NonEmpty (s (Pattern l l d d)) -> Pattern Language l d s
Abstract.unboxedTuplePattern = SupportFor 'UnboxedTuples Language
-> NonEmpty (s (Pattern l l d d)) -> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedTuples λ
-> NonEmpty (s (Pattern l l d d)) -> Pattern λ l d s
UnboxedTuplePattern ()}
instance Abstract.ExtendedWith '[ 'Extensions.UnboxedSums ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'UnboxedSums] Language l d s
build = Abstract.UnboxedSumsConstruction {
unboxedSumType :: NonEmpty (s (Type l l d d)) -> Type Language l d s
Abstract.unboxedSumType = SupportFor 'UnboxedSums Language
-> NonEmpty (s (Type l l d d)) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedSums λ
-> NonEmpty (s (Type l l d d)) -> Type λ l d s
UnboxedSumType (),
unboxedSumConstructor :: Int -> Constructor Language l d s
Abstract.unboxedSumConstructor = SupportFor 'UnboxedSums Language
-> Int -> Constructor Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedSums λ -> Int -> Constructor λ l d s
UnboxedSumConstructor (),
unboxedSumExpression :: Int -> s (Expression l l d d) -> Int -> Expression Language l d s
Abstract.unboxedSumExpression = SupportFor 'UnboxedSums Language
-> Int
-> s (Expression l l d d)
-> Int
-> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedSums λ
-> Int -> s (Expression l l d d) -> Int -> Expression λ l d s
UnboxedSumExpression (),
unboxedSumPattern :: Int -> s (Pattern l l d d) -> Int -> Pattern Language l d s
Abstract.unboxedSumPattern = SupportFor 'UnboxedSums Language
-> Int -> s (Pattern l l d d) -> Int -> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'UnboxedSums λ
-> Int -> s (Pattern l l d d) -> Int -> Pattern λ l d s
UnboxedSumPattern ()}
instance Abstract.ExtendedWith '[ 'Extensions.ExtendedLiterals ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'ExtendedLiterals] Language l d s
build = Abstract.ExtendedLiteralsConstruction {
extendedLiteral :: Integer -> Name Language -> Value Language l d s
Abstract.extendedLiteral = SupportFor 'ExtendedLiterals Language
-> Integer -> Name Language -> Value Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ExtendedLiterals λ
-> Integer -> Name λ -> Value λ l d s
ExtendedLiteral ()}
instance Abstract.ExtendedWith '[ 'Extensions.InterruptibleFFI ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'InterruptibleFFI] Language l d s
build = Abstract.InterruptibleFFIConstruction {
interruptibleCall :: CallSafety Language
Abstract.interruptibleCall = SupportFor 'InterruptibleFFI Language -> CallSafety Language
forall λ. SupportFor 'InterruptibleFFI λ -> CallSafety λ
InterruptibleCall ()}
instance Abstract.ExtendedWith '[ 'Extensions.CApiFFI ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'CApiFFI] Language l d s
build = Abstract.CApiFFIConstruction {
cApiCall :: CallingConvention Language
Abstract.cApiCall = SupportFor 'CApiFFI Language -> CallingConvention Language
forall λ. SupportFor 'CApiFFI λ -> CallingConvention λ
CApiCall ()}
instance Abstract.ExtendedWith '[ 'Extensions.ImplicitParameters ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'ImplicitParameters] Language l d s
build = Abstract.ImplicitParametersConstruction {
implicitParameterConstraint :: Name Language -> s (Type l l d d) -> Context Language l d s
Abstract.implicitParameterConstraint = SupportFor 'ImplicitParameters Language
-> Name Language -> s (Type l l d d) -> Context Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ImplicitParameters λ
-> Name λ -> s (Type l l d d) -> Context λ l d s
ImplicitParameterConstraint (),
implicitParameterDeclaration :: Name Language
-> s (Expression l l d d) -> Declaration Language l d s
Abstract.implicitParameterDeclaration = SupportFor 'ImplicitParameters Language
-> Name Language
-> s (Expression l l d d)
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ImplicitParameters λ
-> Name λ -> s (Expression l l d d) -> Declaration λ l d s
ImplicitParameterDeclaration (),
implicitParameterExpression :: Name Language -> Expression Language l d s
Abstract.implicitParameterExpression = SupportFor 'ImplicitParameters Language
-> Name Language -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ImplicitParameters λ -> Name λ -> Expression λ l d s
ImplicitParameterExpression ()}
instance Abstract.ExtendedWith '[ 'Extensions.StrictData ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'StrictData] Language l d s
build = Abstract.StrictDataConstruction {
lazyType :: s (Type l l d d) -> Type Language l d s
Abstract.lazyType = SupportFor 'StrictData Language
-> s (Type l l d d) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'StrictData λ -> s (Type l l d d) -> Type λ l d s
LazyType ()}
instance Abstract.ExtendedWith '[ 'Extensions.Strict ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'Strict] Language l d s
build = Abstract.StrictConstruction {
lazyPattern :: s (Pattern l l d d) -> Pattern Language l d s
Abstract.lazyPattern = SupportFor 'Strict Language
-> s (Pattern l l d d) -> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'Strict λ -> s (Pattern l l d d) -> Pattern λ l d s
LazyPattern ()}
instance Abstract.ExtendedWith '[ 'Extensions.BangPatterns ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'BangPatterns] Language l d s
build = Abstract.BangPatternConstruction {
bangPattern :: s (Pattern l l d d) -> Pattern Language l d s
Abstract.bangPattern = SupportFor 'BangPatterns Language
-> s (Pattern l l d d) -> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'BangPatterns λ
-> s (Pattern l l d d) -> Pattern λ l d s
BangPattern ()}
instance Abstract.ExtendedWith '[ 'Extensions.ViewPatterns ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'ViewPatterns] Language l d s
build = Abstract.ViewPatternConstruction {
viewPattern :: s (Expression l l d d)
-> s (Pattern l l d d) -> Pattern Language l d s
Abstract.viewPattern = SupportFor 'ViewPatterns Language
-> s (Expression l l d d)
-> s (Pattern l l d d)
-> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'ViewPatterns λ
-> s (Expression l l d d) -> s (Pattern l l d d) -> Pattern λ l d s
ViewPattern ()}
instance Abstract.ExtendedWith '[ 'Extensions.NPlusKPatterns ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'NPlusKPatterns] Language l d s
build = Abstract.NPlusKPatternConstruction {
nPlusKPattern :: Name Language -> Integer -> Pattern Language l d s
Abstract.nPlusKPattern = SupportFor 'NPlusKPatterns Language
-> Name Language -> Integer -> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'NPlusKPatterns λ
-> Name λ -> Integer -> Pattern λ l d s
NPlusKPattern ()}
instance Abstract.ExtendedWith '[ 'Extensions.PatternSynonyms ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'PatternSynonyms] Language l d s
build = Abstract.PatternSynonymConstruction {
exportPattern :: QualifiedName Language -> Export Language l d s
Abstract.exportPattern = QualifiedName Language -> Export Language l d s
QualifiedName Language -> Export Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> Export λ l d s
ExportPattern,
importPattern :: Name Language -> ImportItem Language l d s
Abstract.importPattern = Name Language -> ImportItem Language l d s
Name Language -> ImportItem Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> ImportItem λ l d s
ImportPattern,
allMembersPlus :: [Name Language] -> Members Language
Abstract.allMembersPlus = [Name Language] -> Members Language
[Name Language] -> Members Language
forall λ. [Name λ] -> Members λ
AllMembersPlus,
prefixPatternLHS :: Name Language -> [Name Language] -> PatternLHS Language l d s
Abstract.prefixPatternLHS = Name Language -> [Name Language] -> PatternLHS Language l d s
Name Language -> [Name Language] -> PatternLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> [Name λ] -> PatternLHS λ l d s
PrefixPatternLHS,
infixPatternLHS :: Name Language
-> Name Language -> Name Language -> PatternLHS Language l d s
Abstract.infixPatternLHS = Name Language
-> Name Language -> Name Language -> PatternLHS Language l d s
Name Language
-> Name Language -> Name Language -> PatternLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> Name λ -> Name λ -> PatternLHS λ l d s
InfixPatternLHS,
recordPatternLHS :: Name Language -> [Name Language] -> PatternLHS Language l d s
Abstract.recordPatternLHS = Name Language -> [Name Language] -> PatternLHS Language l d s
Name Language -> [Name Language] -> PatternLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> [Name λ] -> PatternLHS λ l d s
RecordPatternLHS,
prefixPatternEquationLHS :: Name Language
-> [s (Pattern l l d d)] -> PatternEquationLHS Language l d s
Abstract.prefixPatternEquationLHS = Name Language
-> [s (Pattern l l d d)] -> PatternEquationLHS Language l d s
Name Language
-> [s (Pattern l l d d)] -> PatternEquationLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> [s (Pattern l l d d)] -> PatternEquationLHS λ l d s
PrefixPatternEquationLHS,
infixPatternEquationLHS :: s (Pattern l l d d)
-> Name Language
-> s (Pattern l l d d)
-> PatternEquationLHS Language l d s
Abstract.infixPatternEquationLHS = s (Pattern l l d d)
-> Name Language
-> s (Pattern l l d d)
-> PatternEquationLHS Language l d s
s (Pattern l l d d)
-> Name Language
-> s (Pattern l l d d)
-> PatternEquationLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Pattern l l d d)
-> Name λ -> s (Pattern l l d d) -> PatternEquationLHS λ l d s
InfixPatternEquationLHS,
patternEquationClause :: Supports 'PatternSynonyms Language =>
s (PatternEquationLHS l l d d)
-> s (EquationRHS l l d d)
-> [s (Declaration l l d d)]
-> PatternEquationClause Language l d s
Abstract.patternEquationClause = SupportFor 'PatternSynonyms Language
-> s (PatternEquationLHS l l d d)
-> s (EquationRHS l l d d)
-> [s (Declaration l l d d)]
-> PatternEquationClause Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'PatternSynonyms λ
-> s (PatternEquationLHS l l d d)
-> s (EquationRHS l l d d)
-> [s (Declaration l l d d)]
-> PatternEquationClause λ l d s
PatternEquationClause (),
implicitPatternSynonym :: Supports 'PatternSynonyms Language =>
s (PatternLHS l l d d)
-> s (Pattern l l d d) -> Declaration Language l d s
Abstract.implicitPatternSynonym = SupportFor 'PatternSynonyms Language
-> s (PatternLHS l l d d)
-> s (Pattern l l d d)
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'PatternSynonyms λ
-> s (PatternLHS l l d d)
-> s (Pattern l l d d)
-> Declaration λ l d s
ImplicitPatternSynonym (),
unidirectionalPatternSynonym :: Supports 'PatternSynonyms Language =>
s (PatternLHS l l d d)
-> s (Pattern l l d d) -> Declaration Language l d s
Abstract.unidirectionalPatternSynonym = SupportFor 'PatternSynonyms Language
-> s (PatternLHS l l d d)
-> s (Pattern l l d d)
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'PatternSynonyms λ
-> s (PatternLHS l l d d)
-> s (Pattern l l d d)
-> Declaration λ l d s
UnidirectionalPatternSynonym (),
explicitPatternSynonym :: Supports 'PatternSynonyms Language =>
s (PatternLHS l l d d)
-> s (Pattern l l d d)
-> [s (PatternEquationClause l l d d)]
-> Declaration Language l d s
Abstract.explicitPatternSynonym = SupportFor 'PatternSynonyms Language
-> s (PatternLHS l l d d)
-> s (Pattern l l d d)
-> [s (PatternEquationClause l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'PatternSynonyms λ
-> s (PatternLHS l l d d)
-> s (Pattern l l d d)
-> [s (PatternEquationClause l l d d)]
-> Declaration λ l d s
ExplicitPatternSynonym (),
patternSynonymSignature :: Supports 'PatternSynonyms Language =>
NonEmpty (Name Language)
-> [TypeVarBinding Language l d s]
-> s (Context l l d d)
-> [TypeVarBinding Language l d s]
-> s (Context l l d d)
-> [s (Type l l d d)]
-> s (Type l l d d)
-> Declaration Language l d s
Abstract.patternSynonymSignature = SupportFor 'PatternSynonyms Language
-> NonEmpty (Name Language)
-> [TypeVarBinding Language l d s]
-> s (Context l l d d)
-> [TypeVarBinding Language l d s]
-> s (Context l l d d)
-> [s (Type l l d d)]
-> s (Type l l d d)
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'PatternSynonyms λ
-> NonEmpty (Name λ)
-> [TypeVarBinding λ l d s]
-> s (Context l l d d)
-> [TypeVarBinding λ l d s]
-> s (Context l l d d)
-> [s (Type l l d d)]
-> s (Type l l d d)
-> Declaration λ l d s
PatternSynonymSignature ()}
instance Abstract.ExtendedWith '[ 'Extensions.NamedDefaults ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'NamedDefaults] Language l d s
build = Abstract.NamedDefaultsConstruction {
namedDefaultDeclaration :: QualifiedName Language
-> [s (Type l l d d)] -> Declaration Language l d s
Abstract.namedDefaultDeclaration = SupportFor 'NamedDefaults Language
-> QualifiedName Language
-> [s (Type l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'NamedDefaults λ
-> QualifiedName λ -> [s (Type l l d d)] -> Declaration λ l d s
NamedDefaultDeclaration ()}
instance Abstract.ExtendedWith '[ 'Extensions.StandaloneDeriving ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'StandaloneDeriving] Language l d s
build = Abstract.StandaloneDerivingConstruction {
standaloneDerivingDeclaration :: [TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> Declaration Language l d s
Abstract.standaloneDerivingDeclaration = SupportFor 'StandaloneDeriving Language
-> [TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'StandaloneDeriving λ
-> [TypeVarBinding λ l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> Declaration λ l d s
StandaloneDerivingDeclaration ()}
instance Abstract.ExtendedWith '[ 'Extensions.DerivingStrategies ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'DerivingStrategies] Language l d s
build = Abstract.DerivingStrategiesConstruction {
defaultStrategy :: DerivingStrategy Language l d s
Abstract.defaultStrategy = DerivingStrategy Language l d s
DerivingStrategy Language l d s
forall λ l (d :: * -> *) (s :: * -> *). DerivingStrategy λ l d s
Default,
stockStrategy :: DerivingStrategy Language l d s
Abstract.stockStrategy = DerivingStrategy Language l d s
DerivingStrategy Language l d s
forall λ l (d :: * -> *) (s :: * -> *). DerivingStrategy λ l d s
Stock,
newtypeStrategy :: DerivingStrategy Language l d s
Abstract.newtypeStrategy = DerivingStrategy Language l d s
DerivingStrategy Language l d s
forall λ l (d :: * -> *) (s :: * -> *). DerivingStrategy λ l d s
Newtype,
anyClassStrategy :: DerivingStrategy Language l d s
Abstract.anyClassStrategy = DerivingStrategy Language l d s
DerivingStrategy Language l d s
forall λ l (d :: * -> *) (s :: * -> *). DerivingStrategy λ l d s
AnyClass,
strategicDerive :: s (DerivingStrategy l l d d)
-> [s (Type l l d d)] -> DerivingClause Language l d s
Abstract.strategicDerive = SupportFor 'DerivingStrategies Language
-> s (DerivingStrategy l l d d)
-> [s (Type l l d d)]
-> DerivingClause Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'DerivingStrategies λ
-> s (DerivingStrategy l l d d)
-> [s (Type l l d d)]
-> DerivingClause λ l d s
StrategicDerive (),
standaloneStrategicDerivingDeclaration :: Supports 'StandaloneDeriving Language =>
s (DerivingStrategy l l d d)
-> [TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> Declaration Language l d s
Abstract.standaloneStrategicDerivingDeclaration = SupportFor 'StandaloneDeriving Language
-> SupportFor 'DerivingStrategies Language
-> s (DerivingStrategy l l d d)
-> [TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'StandaloneDeriving λ
-> SupportFor 'DerivingStrategies λ
-> s (DerivingStrategy l l d d)
-> [TypeVarBinding λ l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> Declaration λ l d s
StandaloneStrategicDerivingDeclaration () ()}
instance Abstract.ExtendedWith '[ 'Extensions.DerivingVia ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'DerivingVia] Language l d s
build = Abstract.DerivingViaConstruction {
derivingViaStrategy :: s (Type l l d d) -> DerivingStrategy Language l d s
Abstract.derivingViaStrategy = SupportFor 'DerivingVia Language
-> s (Type l l d d) -> DerivingStrategy Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'DerivingVia λ
-> s (Type l l d d) -> DerivingStrategy λ l d s
Via (),
deriveVia :: [s (Type l l d d)]
-> s (Type l l d d) -> DerivingClause Language l d s
Abstract.deriveVia = SupportFor 'DerivingVia Language
-> [s (Type l l d d)]
-> s (Type l l d d)
-> DerivingClause Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'DerivingVia λ
-> [s (Type l l d d)] -> s (Type l l d d) -> DerivingClause λ l d s
DeriveVia ()}
instance Abstract.ExtendedWith '[ 'Extensions.DefaultSignatures ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'DefaultSignatures] Language l d s
build = Abstract.DefaultSignatureConstruction {
defaultMethodSignature :: Name Language
-> s (Context l l d d)
-> s (Type l l d d)
-> Declaration Language l d s
Abstract.defaultMethodSignature = SupportFor 'DefaultSignatures Language
-> Name Language
-> s (Context l l d d)
-> s (Type l l d d)
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'DefaultSignatures λ
-> Name λ
-> s (Context l l d d)
-> s (Type l l d d)
-> Declaration λ l d s
DefaultMethodSignature ()}
instance Abstract.ExtendedWith '[ 'Extensions.TypeData ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'TypeData] Language l d s
build = Abstract.TypeDataConstruction {
typeDataDeclaration :: s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (DataConstructor l l d d)]
-> Declaration Language l d s
Abstract.typeDataDeclaration = SupportFor 'TypeData Language
-> s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (DataConstructor l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'TypeData λ
-> s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (DataConstructor l l d d)]
-> Declaration λ l d s
TypeDataDeclaration ()}
instance Abstract.ExtendedWith '[ 'Extensions.GADTs, 'Extensions.TypeData ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'GADTs, 'TypeData] Language l d s
build = Abstract.TypeGADTConstruction {
typeGADTDeclaration :: s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (GADTConstructor l l d d)]
-> Declaration Language l d s
Abstract.typeGADTDeclaration = SupportFor 'GADTs Language
-> SupportFor 'TypeData Language
-> s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (GADTConstructor l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'GADTs λ
-> SupportFor 'TypeData λ
-> s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (GADTConstructor l l d d)]
-> Declaration λ l d s
TypeGADTDeclaration () ()}
instance Abstract.ExtendedWith '[ 'Extensions.TypeAbstractions ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'TypeAbstractions] Language l d s
build = Abstract.TypeAbstractionConstruction {
typeLHSTypeApplication :: s (TypeLHS l l d d)
-> TypeVarBinding Language l d s -> TypeLHS Language l d s
Abstract.typeLHSTypeApplication = SupportFor 'TypeAbstractions Language
-> s (TypeLHS l l d d)
-> TypeVarBinding Language l d s
-> TypeLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'TypeAbstractions λ
-> s (TypeLHS l l d d) -> TypeVarBinding λ l d s -> TypeLHS λ l d s
TypeLHSTypeApplication (),
invisibleTypePattern :: s (Type l l d d) -> Pattern Language l d s
Abstract.invisibleTypePattern = SupportFor 'TypeAbstractions Language
-> s (Type l l d d) -> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'TypeAbstractions λ
-> s (Type l l d d) -> Pattern λ l d s
InvisibleTypePattern ()}
instance Abstract.ExtendedWith '[ 'Extensions.FunctionalDependencies ] Language where
build :: forall l (d :: * -> *) (s :: * -> *).
Construct '[ 'FunctionalDependencies] Language l d s
build = Abstract.FunctionalDependenciesConstruction {
functionalDependency :: [Name Language]
-> [Name Language] -> FunctionalDependency Language l d s
Abstract.functionalDependency = [Name Language]
-> [Name Language] -> FunctionalDependency Language l d s
[Name Language]
-> [Name Language] -> FunctionalDependency Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[Name λ] -> [Name λ] -> FunctionalDependency λ l d s
FunctionalDependency,
fundepClassDeclaration :: s (Context l l d d)
-> s (TypeLHS l l d d)
-> [s (FunctionalDependency l l d d)]
-> [s (Declaration l l d d)]
-> Declaration Language l d s
Abstract.fundepClassDeclaration = SupportFor 'FunctionalDependencies Language
-> s (Context l l d d)
-> s (TypeLHS l l d d)
-> [s (FunctionalDependency l l d d)]
-> [s (Declaration l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
SupportFor 'FunctionalDependencies λ
-> s (Context l l d d)
-> s (TypeLHS l l d d)
-> [s (FunctionalDependency l l d d)]
-> [s (Declaration l l d d)]
-> Declaration λ l d s
FunDepClassDeclaration ()}
type instance Abstract.FunctionalDependency Language = FunctionalDependency Language
type instance Abstract.LambdaCasesAlternative Language = LambdaCasesAlternative Language
type instance Abstract.DerivingStrategy Language = DerivingStrategy Language
type instance Abstract.PatternLHS Language = PatternLHS Language
type instance Abstract.PatternEquationLHS Language = PatternEquationLHS Language
type instance Abstract.PatternEquationClause Language = PatternEquationClause Language
instance Abstract.ExtendedHaskell Language where
type GADTConstructor Language = GADTConstructor Language
type Kind Language = Type Language
type TypeVarBinding Language = TypeVarBinding Language
type ModuleMember Language = ModuleMember Language
type TypeRole Language = TypeRole Language
multiWayIfExpression :: forall (s :: * -> *) l (d :: * -> *).
[s (GuardedExpression l l d d)] -> Expression Language l d s
multiWayIfExpression = [s (GuardedExpression l l d d)] -> Expression Language l d s
[s (GuardedExpression l l d d)] -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[s (GuardedExpression l l d d)] -> Expression λ l d s
MultiWayIfExpression
safeImportDeclaration :: forall (s :: * -> *) l (d :: * -> *).
Bool
-> ModuleName Language
-> Maybe (ModuleName Language)
-> Maybe (s (ImportSpecification l l d d))
-> Import Language l d s
safeImportDeclaration Bool
q = Bool
-> Bool
-> Maybe Text
-> ModuleName Language
-> Maybe (ModuleName Language)
-> Maybe (s (ImportSpecification l l d d))
-> Import Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Bool
-> Bool
-> Maybe Text
-> ModuleName λ
-> Maybe (ModuleName λ)
-> Maybe (s (ImportSpecification l l d d))
-> Import λ l d s
Import Bool
True Bool
q Maybe Text
forall a. Maybe a
Nothing
packageQualifiedImportDeclaration :: forall (s :: * -> *) l (d :: * -> *).
Bool
-> Text
-> ModuleName Language
-> Maybe (ModuleName Language)
-> Maybe (s (ImportSpecification l l d d))
-> Import Language l d s
packageQualifiedImportDeclaration Bool
q Text
p = Bool
-> Bool
-> Maybe Text
-> ModuleName Language
-> Maybe (ModuleName Language)
-> Maybe (s (ImportSpecification l l d d))
-> Import Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Bool
-> Bool
-> Maybe Text
-> ModuleName λ
-> Maybe (ModuleName λ)
-> Maybe (s (ImportSpecification l l d d))
-> Import λ l d s
Import Bool
False Bool
q (Text -> Maybe Text
forall a. a -> Maybe a
Just Text
p)
safePackageQualifiedImportDeclaration :: forall (s :: * -> *) l (d :: * -> *).
Bool
-> Text
-> ModuleName Language
-> Maybe (ModuleName Language)
-> Maybe (s (ImportSpecification l l d d))
-> Import Language l d s
safePackageQualifiedImportDeclaration Bool
q Text
p = Bool
-> Bool
-> Maybe Text
-> ModuleName Language
-> Maybe (ModuleName Language)
-> Maybe (s (ImportSpecification l l d d))
-> Import Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Bool
-> Bool
-> Maybe Text
-> ModuleName λ
-> Maybe (ModuleName λ)
-> Maybe (s (ImportSpecification l l d d))
-> Import λ l d s
Import Bool
True Bool
q (Text -> Maybe Text
forall a. a -> Maybe a
Just Text
p)
infixTypeApplication :: forall (s :: * -> *) l (d :: * -> *).
s (Type l l d d)
-> QualifiedName Language
-> s (Type l l d d)
-> Type Language l d s
infixTypeApplication = s (Type l l d d)
-> QualifiedName Language
-> s (Type l l d d)
-> Type Language l d s
s (Type l l d d)
-> QualifiedName Language
-> s (Type l l d d)
-> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d)
-> QualifiedName λ -> s (Type l l d d) -> Type λ l d s
InfixTypeApplication
simpleKindedTypeLHS :: forall l (d :: * -> *) (s :: * -> *).
Name Language
-> [TypeVarBinding Language l d s] -> TypeLHS Language l d s
simpleKindedTypeLHS = Name Language
-> [TypeVarBinding Language l d s] -> TypeLHS Language l d s
Name Language
-> [TypeVarBinding Language l d s] -> TypeLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> [TypeVarBinding λ l d s] -> TypeLHS λ l d s
SimpleTypeLHS
infixTypeLHSApplication :: forall l (d :: * -> *) (s :: * -> *).
TypeVarBinding Language l d s
-> Name Language
-> TypeVarBinding Language l d s
-> TypeLHS Language l d s
infixTypeLHSApplication TypeVarBinding Language l d s
left Name Language
op TypeVarBinding Language l d s
right = Name Language
-> [TypeVarBinding Language l d s] -> TypeLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> [TypeVarBinding λ l d s] -> TypeLHS λ l d s
SimpleTypeLHS Name Language
op [TypeVarBinding Language l d s
TypeVarBinding Language l d s
left, TypeVarBinding Language l d s
TypeVarBinding Language l d s
right]
typeLHSApplication :: forall (s :: * -> *) l (d :: * -> *).
s (TypeLHS l l d d)
-> TypeVarBinding Language l d s -> TypeLHS Language l d s
typeLHSApplication = s (TypeLHS l l d d)
-> TypeVarBinding Language l d s -> TypeLHS Language l d s
s (TypeLHS l l d d)
-> TypeVarBinding Language l d s -> TypeLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (TypeLHS l l d d) -> TypeVarBinding λ l d s -> TypeLHS λ l d s
TypeLHSApplication
visibleDependentType :: forall l (d :: * -> *) (s :: * -> *).
[TypeVarBinding Language l d s]
-> s (Type l l d d) -> Type Language l d s
visibleDependentType = [TypeVarBinding Language l d s]
-> s (Type l l d d) -> Type Language l d s
[TypeVarBinding Language l d s]
-> s (Type l l d d) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s] -> s (Type l l d d) -> Type λ l d s
VisibleDependentType
existentialConstructor :: forall l (d :: * -> *) (s :: * -> *).
[TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (DataConstructor l l d d)
-> DataConstructor Language l d s
existentialConstructor = [TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (DataConstructor l l d d)
-> DataConstructor Language l d s
[TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (DataConstructor l l d d)
-> DataConstructor Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s]
-> s (Context l l d d)
-> s (DataConstructor l l d d)
-> DataConstructor λ l d s
ExistentialConstructor
explicitlyScopedInstanceDeclaration :: forall l (d :: * -> *) (s :: * -> *).
[TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> [s (Declaration l l d d)]
-> Declaration Language l d s
explicitlyScopedInstanceDeclaration = [TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> [s (Declaration l l d d)]
-> Declaration Language l d s
[TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> [s (Declaration l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> [s (Declaration l l d d)]
-> Declaration λ l d s
InstanceDeclaration
forallType :: forall l (d :: * -> *) (s :: * -> *).
[TypeVarBinding Language l d s]
-> s (Type l l d d) -> Type Language l d s
forallType = [TypeVarBinding Language l d s]
-> s (Type l l d d) -> Type Language l d s
[TypeVarBinding Language l d s]
-> s (Type l l d d) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s] -> s (Type l l d d) -> Type λ l d s
ForallType
kindedType :: forall (s :: * -> *) l (d :: * -> *).
s (Type l l d d) -> s (Kind l l d d) -> Type Language l d s
kindedType = s (Type l l d d) -> s (Kind l l d d) -> Type Language l d s
s (Type l l d d) -> s (Kind l l d d) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> s (Kind l l d d) -> Type λ l d s
KindedType
constrainedType :: forall (s :: * -> *) l (d :: * -> *).
s (Context l l d d) -> s (Type l l d d) -> Type Language l d s
constrainedType = s (Context l l d d) -> s (Type l l d d) -> Type Language l d s
s (Context l l d d) -> s (Type l l d d) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Context l l d d) -> s (Type l l d d) -> Type λ l d s
ConstrainedType
constraintType :: forall (s :: * -> *) l (d :: * -> *).
s (Context l l d d) -> Type Language l d s
constraintType = s (Context l l d d) -> Type Language l d s
s (Context l l d d) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Context l l d d) -> Type λ l d s
ConstraintType
typeKind :: forall (s :: * -> *) l (d :: * -> *).
s (Type l l d d) -> Kind Language l d s
typeKind = s (Type l l d d) -> Kind Language l d s
s (Type l l d d) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> Type λ l d s
TypeKind
typeWildcard :: forall l (d :: * -> *) (s :: * -> *). Type Language l d s
typeWildcard = Type Language l d s
Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Type λ l d s
TypeWildcard
groundType :: forall l (d :: * -> *) (s :: * -> *). Type Language l d s
groundType = Type Language l d s
Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Type λ l d s
GroundTypeKind
typeEquality :: forall (s :: * -> *) l (d :: * -> *).
s (Type l l d d) -> s (Type l l d d) -> Context Language l d s
typeEquality = s (Type l l d d) -> s (Type l l d d) -> Context Language l d s
s (Type l l d d) -> s (Type l l d d) -> Context Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> s (Type l l d d) -> Context λ l d s
TypeEquality
kindedDataDeclaration :: forall (s :: * -> *) l (d :: * -> *).
s (Context l l d d)
-> s (TypeLHS l l d d)
-> s (Kind l l d d)
-> [s (DataConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
kindedDataDeclaration s (Context l l d d)
context s (TypeLHS l l d d)
lhs = s (Context l l d d)
-> s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (DataConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Context l l d d)
-> s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (DataConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration λ l d s
DataDeclaration s (Context l l d d)
context s (TypeLHS l l d d)
lhs (Maybe (s (Kind l l d d))
-> [s (DataConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s)
-> (s (Kind l l d d) -> Maybe (s (Kind l l d d)))
-> s (Kind l l d d)
-> [s (DataConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
forall b c a. (b -> c) -> (a -> b) -> a -> c
. s (Kind l l d d) -> Maybe (s (Kind l l d d))
forall a. a -> Maybe a
Just
kindedNewtypeDeclaration :: forall (s :: * -> *) l (d :: * -> *).
s (Context l l d d)
-> s (TypeLHS l l d d)
-> s (Kind l l d d)
-> s (DataConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
kindedNewtypeDeclaration s (Context l l d d)
context s (TypeLHS l l d d)
lhs = s (Context l l d d)
-> s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (DataConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Context l l d d)
-> s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (DataConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration λ l d s
NewtypeDeclaration s (Context l l d d)
context s (TypeLHS l l d d)
lhs (Maybe (s (Kind l l d d))
-> s (DataConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s)
-> (s (Kind l l d d) -> Maybe (s (Kind l l d d)))
-> s (Kind l l d d)
-> s (DataConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
forall b c a. (b -> c) -> (a -> b) -> a -> c
. s (Kind l l d d) -> Maybe (s (Kind l l d d))
forall a. a -> Maybe a
Just
gadtDeclaration :: forall (s :: * -> *) l (d :: * -> *).
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (GADTConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
gadtDeclaration = s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (GADTConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (GADTConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (GADTConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration λ l d s
GADTDeclaration
gadtNewtypeDeclaration :: forall (s :: * -> *) l (d :: * -> *).
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (GADTConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
gadtNewtypeDeclaration = s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (GADTConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (GADTConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (GADTConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration λ l d s
GADTNewtypeDeclaration
gadtConstructors :: forall l (d :: * -> *) (s :: * -> *).
NonEmpty (Name Language)
-> [TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (Type l l d d)
-> GADTConstructor Language l d s
gadtConstructors = NonEmpty (Name Language)
-> [TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (Type l l d d)
-> GADTConstructor Language l d s
NonEmpty (Name Language)
-> [TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (Type l l d d)
-> GADTConstructor Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (Name λ)
-> [TypeVarBinding λ l d s]
-> s (Context l l d d)
-> s (Type l l d d)
-> GADTConstructor λ l d s
GADTConstructors
recordFunctionType :: forall (s :: * -> *) l (d :: * -> *).
[s (FieldDeclaration l l d d)]
-> s (Type l l d d) -> Type Language l d s
recordFunctionType = [s (FieldDeclaration l l d d)]
-> s (Type l l d d) -> Type Language l d s
[s (FieldDeclaration l l d d)]
-> s (Type l l d d) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[s (FieldDeclaration l l d d)] -> s (Type l l d d) -> Type λ l d s
RecordFunctionType
linearFunctionType :: forall (s :: * -> *) l (d :: * -> *).
s (Type l l d d) -> s (Type l l d d) -> Type Language l d s
linearFunctionType = s (Type l l d d) -> s (Type l l d d) -> Type Language l d s
s (Type l l d d) -> s (Type l l d d) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> s (Type l l d d) -> Type λ l d s
LinearFunctionType
multiplicityFunctionType :: forall (s :: * -> *) l (d :: * -> *).
s (Type l l d d)
-> s (Type l l d d) -> s (Type l l d d) -> Type Language l d s
multiplicityFunctionType = s (Type l l d d)
-> s (Type l l d d) -> s (Type l l d d) -> Type Language l d s
s (Type l l d d)
-> s (Type l l d d) -> s (Type l l d d) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d)
-> s (Type l l d d) -> s (Type l l d d) -> Type λ l d s
MultiplicityFunctionType
promotedConstructorType :: forall (s :: * -> *) l (d :: * -> *).
s (Constructor l l d d) -> Type Language l d s
promotedConstructorType = s (Constructor l l d d) -> Type Language l d s
s (Constructor l l d d) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Constructor l l d d) -> Type λ l d s
PromotedConstructorType
promotedTupleType :: forall (s :: * -> *) l (d :: * -> *).
[s (Type l l d d)] -> Type Language l d s
promotedTupleType = [s (Type l l d d)] -> Type Language l d s
[s (Type l l d d)] -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[s (Type l l d d)] -> Type λ l d s
PromotedTupleType
promotedListType :: forall (s :: * -> *) l (d :: * -> *).
[s (Type l l d d)] -> Type Language l d s
promotedListType = [s (Type l l d d)] -> Type Language l d s
[s (Type l l d d)] -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[s (Type l l d d)] -> Type λ l d s
PromotedListType
promotedIntegerLiteral :: forall l (d :: * -> *) (s :: * -> *).
Integer -> Type Language l d s
promotedIntegerLiteral = Integer -> Type Language l d s
Integer -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Integer -> Type λ l d s
PromotedIntegerLiteral
promotedCharLiteral :: forall l (d :: * -> *) (s :: * -> *). Char -> Type Language l d s
promotedCharLiteral = Char -> Type Language l d s
Char -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Char -> Type λ l d s
PromotedCharLiteral
promotedStringLiteral :: forall l (d :: * -> *) (s :: * -> *). Text -> Type Language l d s
promotedStringLiteral = Text -> Type Language l d s
Text -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Text -> Type λ l d s
PromotedStringLiteral
promotedInfixTypeApplication :: forall (s :: * -> *) l (d :: * -> *).
s (Type l l d d)
-> QualifiedName Language
-> s (Type l l d d)
-> Type Language l d s
promotedInfixTypeApplication = s (Type l l d d)
-> QualifiedName Language
-> s (Type l l d d)
-> Type Language l d s
s (Type l l d d)
-> QualifiedName Language
-> s (Type l l d d)
-> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d)
-> QualifiedName λ -> s (Type l l d d) -> Type λ l d s
PromotedInfixTypeApplication
typeRoleDeclaration :: forall l (d :: * -> *) (s :: * -> *).
QualifiedName Language
-> [TypeRole Language] -> Declaration Language l d s
typeRoleDeclaration = QualifiedName Language
-> [TypeRole Language] -> Declaration Language l d s
QualifiedName Language
-> [TypeRole Language] -> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> [TypeRole λ] -> Declaration λ l d s
TypeRoleDeclaration
inferredRole :: TypeRole Language
inferredRole = TypeRole Language
TypeRole Language
forall λ. TypeRole λ
InferredRole
nominalRole :: TypeRole Language
nominalRole = TypeRole Language
TypeRole Language
forall λ. TypeRole λ
NominalRole
representationalRole :: TypeRole Language
representationalRole = TypeRole Language
TypeRole Language
forall λ. TypeRole λ
RepresentationalRole
phantomRole :: TypeRole Language
phantomRole = TypeRole Language
TypeRole Language
forall λ. TypeRole λ
PhantomRole
explicitlyKindedTypeVariable :: forall (s :: * -> *) l (d :: * -> *).
Name Language -> s (Kind l l d d) -> TypeVarBinding Language l d s
explicitlyKindedTypeVariable = Bool
-> Name Language
-> s (Kind l l d d)
-> TypeVarBinding Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Bool -> Name λ -> s (Kind l l d d) -> TypeVarBinding λ l d s
ExplicitlyKindedTypeVariable Bool
False
implicitlyKindedTypeVariable :: forall l (d :: * -> *) (s :: * -> *).
Name Language -> TypeVarBinding Language l d s
implicitlyKindedTypeVariable = Bool -> Name Language -> TypeVarBinding Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Bool -> Name λ -> TypeVarBinding λ l d s
ImplicitlyKindedTypeVariable Bool
False
inferredTypeVariable :: forall l (d :: * -> *) (s :: * -> *).
Name Language -> TypeVarBinding Language l d s
inferredTypeVariable = Bool -> Name Language -> TypeVarBinding Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Bool -> Name λ -> TypeVarBinding λ l d s
ImplicitlyKindedTypeVariable Bool
True
inferredExplicitlyKindedTypeVariable :: forall (s :: * -> *) l (d :: * -> *).
Name Language -> s (Kind l l d d) -> TypeVarBinding Language l d s
inferredExplicitlyKindedTypeVariable = Bool
-> Name Language
-> s (Kind l l d d)
-> TypeVarBinding Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Bool -> Name λ -> s (Kind l l d d) -> TypeVarBinding λ l d s
ExplicitlyKindedTypeVariable Bool
True
groundTypeKind :: forall l (d :: * -> *) (s :: * -> *). Type Language l d s
groundTypeKind = Type Language l d s
Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Type λ l d s
GroundTypeKind
typeConstraint :: forall (s :: * -> *) l (d :: * -> *).
s (Type l l d d) -> Context Language l d s
typeConstraint = s (Type l l d d) -> Context Language l d s
s (Type l l d d) -> Context Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> Context λ l d s
TypeConstraint
dataFamilyDeclaration :: forall (s :: * -> *) l (d :: * -> *).
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d)) -> Declaration Language l d s
dataFamilyDeclaration = s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d)) -> Declaration Language l d s
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d)) -> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d)) -> Declaration λ l d s
DataFamilyDeclaration
openTypeFamilyDeclaration :: forall (s :: * -> *) l (d :: * -> *).
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d)) -> Declaration Language l d s
openTypeFamilyDeclaration = s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d)) -> Declaration Language l d s
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d)) -> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d)) -> Declaration λ l d s
OpenTypeFamilyDeclaration
closedTypeFamilyDeclaration :: forall (s :: * -> *) l (d :: * -> *).
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (Declaration l l d d)]
-> Declaration Language l d s
closedTypeFamilyDeclaration = s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (Declaration l l d d)]
-> Declaration Language l d s
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (Declaration l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (Declaration l l d d)]
-> Declaration λ l d s
ClosedTypeFamilyDeclaration
injectiveOpenTypeFamilyDeclaration :: forall (s :: * -> *) l (d :: * -> *).
s (TypeLHS l l d d)
-> TypeVarBinding Language l d s
-> Maybe (Name Language, NonEmpty (Name Language))
-> Declaration Language l d s
injectiveOpenTypeFamilyDeclaration = s (TypeLHS l l d d)
-> TypeVarBinding Language l d s
-> Maybe (Name Language, NonEmpty (Name Language))
-> Declaration Language l d s
s (TypeLHS l l d d)
-> TypeVarBinding Language l d s
-> Maybe (Name Language, NonEmpty (Name Language))
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (TypeLHS l l d d)
-> TypeVarBinding λ l d s
-> Maybe (Name λ, NonEmpty (Name λ))
-> Declaration λ l d s
InjectiveOpenTypeFamilyDeclaration
injectiveClosedTypeFamilyDeclaration :: forall (s :: * -> *) l (d :: * -> *).
s (TypeLHS l l d d)
-> TypeVarBinding Language l d s
-> Maybe (Name Language, NonEmpty (Name Language))
-> [s (Declaration l l d d)]
-> Declaration Language l d s
injectiveClosedTypeFamilyDeclaration = s (TypeLHS l l d d)
-> TypeVarBinding Language l d s
-> Maybe (Name Language, NonEmpty (Name Language))
-> [s (Declaration l l d d)]
-> Declaration Language l d s
s (TypeLHS l l d d)
-> TypeVarBinding Language l d s
-> Maybe (Name Language, NonEmpty (Name Language))
-> [s (Declaration l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (TypeLHS l l d d)
-> TypeVarBinding λ l d s
-> Maybe (Name λ, NonEmpty (Name λ))
-> [s (Declaration l l d d)]
-> Declaration λ l d s
InjectiveClosedTypeFamilyDeclaration
dataFamilyInstance :: forall l (d :: * -> *) (s :: * -> *).
[TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (DataConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
dataFamilyInstance = [TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (DataConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
[TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (DataConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (DataConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration λ l d s
DataFamilyInstance
newtypeFamilyInstance :: forall l (d :: * -> *) (s :: * -> *).
[TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (DataConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
newtypeFamilyInstance = [TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (DataConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
[TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (DataConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (DataConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration λ l d s
NewtypeFamilyInstance
gadtDataFamilyInstance :: forall l (d :: * -> *) (s :: * -> *).
[TypeVarBinding Language l d s]
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (GADTConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
gadtDataFamilyInstance = [TypeVarBinding Language l d s]
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (GADTConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
[TypeVarBinding Language l d s]
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (GADTConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s]
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (GADTConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration λ l d s
GADTDataFamilyInstance
gadtNewtypeFamilyInstance :: forall l (d :: * -> *) (s :: * -> *).
[TypeVarBinding Language l d s]
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (GADTConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
gadtNewtypeFamilyInstance = [TypeVarBinding Language l d s]
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (GADTConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
[TypeVarBinding Language l d s]
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (GADTConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s]
-> s (ClassInstanceLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (GADTConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration λ l d s
GADTNewtypeFamilyInstance
typeFamilyInstance :: forall l (d :: * -> *) (s :: * -> *).
[TypeVarBinding Language l d s]
-> s (ClassInstanceLHS l l d d)
-> s (Type l l d d)
-> Declaration Language l d s
typeFamilyInstance = [TypeVarBinding Language l d s]
-> s (ClassInstanceLHS l l d d)
-> s (Type l l d d)
-> Declaration Language l d s
[TypeVarBinding Language l d s]
-> s (ClassInstanceLHS l l d d)
-> s (Type l l d d)
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s]
-> s (ClassInstanceLHS l l d d)
-> s (Type l l d d)
-> Declaration λ l d s
TypeFamilyInstance
classReferenceInstanceLHS :: forall l (d :: * -> *) (s :: * -> *).
QualifiedName Language -> ClassInstanceLHS Language l d s
classReferenceInstanceLHS = QualifiedName Language -> ClassInstanceLHS Language l d s
QualifiedName Language -> ClassInstanceLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> ClassInstanceLHS λ l d s
ClassReferenceInstanceLHS
infixTypeClassInstanceLHS :: forall (s :: * -> *) l (d :: * -> *).
s (Type l l d d)
-> QualifiedName Language
-> s (Type l l d d)
-> ClassInstanceLHS Language l d s
infixTypeClassInstanceLHS = s (Type l l d d)
-> QualifiedName Language
-> s (Type l l d d)
-> ClassInstanceLHS Language l d s
s (Type l l d d)
-> QualifiedName Language
-> s (Type l l d d)
-> ClassInstanceLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d)
-> QualifiedName λ -> s (Type l l d d) -> ClassInstanceLHS λ l d s
InfixTypeClassInstanceLHS
classInstanceLHSApplication :: forall (s :: * -> *) l (d :: * -> *).
s (ClassInstanceLHS l l d d)
-> s (Type l l d d) -> ClassInstanceLHS Language l d s
classInstanceLHSApplication = s (ClassInstanceLHS l l d d)
-> s (Type l l d d) -> ClassInstanceLHS Language l d s
s (ClassInstanceLHS l l d d)
-> s (Type l l d d) -> ClassInstanceLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (ClassInstanceLHS l l d d)
-> s (Type l l d d) -> ClassInstanceLHS λ l d s
ClassInstanceLHSApplication
classInstanceLHSKindApplication :: forall (s :: * -> *) l (d :: * -> *).
s (ClassInstanceLHS l l d d)
-> s (Kind l l d d) -> ClassInstanceLHS Language l d s
classInstanceLHSKindApplication = s (ClassInstanceLHS l l d d)
-> s (Kind l l d d) -> ClassInstanceLHS Language l d s
s (ClassInstanceLHS l l d d)
-> s (Kind l l d d) -> ClassInstanceLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (ClassInstanceLHS l l d d)
-> s (Kind l l d d) -> ClassInstanceLHS λ l d s
ClassInstanceLHSKindApplication
kindSignature :: forall (s :: * -> *) l (d :: * -> *).
Name Language -> s (Kind l l d d) -> Declaration Language l d s
kindSignature = Name Language -> s (Kind l l d d) -> Declaration Language l d s
Name Language -> s (Kind l l d d) -> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> s (Kind l l d d) -> Declaration λ l d s
KindSignature
visibleTypeApplication :: forall (s :: * -> *) l (d :: * -> *).
s (Expression l l d d)
-> s (Type l l d d) -> Expression Language l d s
visibleTypeApplication = s (Expression l l d d)
-> s (Type l l d d) -> Expression Language l d s
s (Expression l l d d)
-> s (Type l l d d) -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d) -> s (Type l l d d) -> Expression λ l d s
VisibleTypeApplication
visibleKindApplication :: forall (s :: * -> *) l (d :: * -> *).
s (Type l l d d) -> s (Kind l l d d) -> Type Language l d s
visibleKindApplication = s (Type l l d d) -> s (Kind l l d d) -> Type Language l d s
s (Type l l d d) -> s (Kind l l d d) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> s (Kind l l d d) -> Type λ l d s
VisibleKindApplication
typedPattern :: forall (s :: * -> *) l (d :: * -> *).
s (Pattern l l d d) -> s (Type l l d d) -> Pattern Language l d s
typedPattern = s (Pattern l l d d) -> s (Type l l d d) -> Pattern Language l d s
s (Pattern l l d d) -> s (Type l l d d) -> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Pattern l l d d) -> s (Type l l d d) -> Pattern λ l d s
TypedPattern
constructorPatternWithTypeApplications :: forall (s :: * -> *) l (d :: * -> *).
s (Constructor l l d d)
-> [s (Type l l d d)]
-> [s (Pattern l l d d)]
-> Pattern Language l d s
constructorPatternWithTypeApplications = s (Constructor l l d d)
-> [s (Type l l d d)]
-> [s (Pattern l l d d)]
-> Pattern Language l d s
s (Constructor l l d d)
-> [s (Type l l d d)]
-> [s (Pattern l l d d)]
-> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Constructor l l d d)
-> [s (Type l l d d)] -> [s (Pattern l l d d)] -> Pattern λ l d s
ConstructorPattern
overloadedLabel :: forall l (d :: * -> *) (s :: * -> *).
Text -> Expression Language l d s
overloadedLabel = Text -> Expression Language l d s
Text -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Text -> Expression λ l d s
OverloadedLabel
getField :: forall (s :: * -> *) l (d :: * -> *).
s (Expression l l d d)
-> Name Language -> Expression Language l d s
getField = s (Expression l l d d)
-> Name Language -> Expression Language l d s
s (Expression l l d d)
-> Name Language -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d) -> Name λ -> Expression λ l d s
GetField
fieldProjection :: forall l (d :: * -> *) (s :: * -> *).
NonEmpty (Name Language) -> Expression Language l d s
fieldProjection = NonEmpty (Name Language) -> Expression Language l d s
NonEmpty (Name Language) -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (Name λ) -> Expression λ l d s
FieldProjection
instance Abstract.Haskell Language where
type Module Language = Module Language
type Declaration Language = Declaration Language
type Expression Language = Expression Language
type Type Language = Type Language
type EquationLHS Language = EquationLHS Language
type EquationRHS Language = EquationRHS Language
type GuardedExpression Language = GuardedExpression Language
type Pattern Language = Pattern Language
type Statement Language = Statement Language
type ClassInstanceLHS Language = ClassInstanceLHS Language
type TypeLHS Language = TypeLHS Language
type Import Language = Import Language
type ImportSpecification Language = ImportSpecification Language
type ImportItem Language = ImportItem Language
type Export Language = Export Language
type Context Language = Context Language
type DataConstructor Language = DataConstructor Language
type DerivingClause Language = DerivingClause Language
type FieldDeclaration Language = FieldDeclaration Language
type FieldBinding Language = FieldBinding Language
type FieldPattern Language = FieldPattern Language
type CaseAlternative Language = CaseAlternative Language
type Constructor Language = Constructor Language
type Value Language = Value Language
type CallingConvention Language = CallingConvention Language
type CallSafety Language = CallSafety Language
type Associativity Language = Associativity Language
type Members Language = Members Language
type Name Language = Name Language
type ModuleName Language = ModuleName Language
type QualifiedName Language = QualifiedName Language
anonymousModule :: forall (s :: * -> *) l (d :: * -> *).
[s (Import l l d d)]
-> [s (Declaration l l d d)] -> Module Language l d s
anonymousModule = [s (Import l l d d)]
-> [s (Declaration l l d d)] -> Module Language l d s
[s (Import l l d d)]
-> [s (Declaration l l d d)] -> Module Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[s (Import l l d d)] -> [s (Declaration l l d d)] -> Module λ l d s
AnonymousModule
namedModule :: forall (s :: * -> *) l (d :: * -> *).
ModuleName Language
-> Maybe [s (Export l l d d)]
-> [s (Import l l d d)]
-> [s (Declaration l l d d)]
-> Module Language l d s
namedModule = ModuleName Language
-> Maybe [s (Export l l d d)]
-> [s (Import l l d d)]
-> [s (Declaration l l d d)]
-> Module Language l d s
ModuleName Language
-> Maybe [s (Export l l d d)]
-> [s (Import l l d d)]
-> [s (Declaration l l d d)]
-> Module Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
ModuleName λ
-> Maybe [s (Export l l d d)]
-> [s (Import l l d d)]
-> [s (Declaration l l d d)]
-> Module λ l d s
NamedModule
withLanguagePragma :: forall (s :: * -> *) l (d :: * -> *).
[ExtensionSwitch] -> s (Module l l d d) -> Module Language l d s
withLanguagePragma = [ExtensionSwitch] -> s (Module l l d d) -> Module Language l d s
[ExtensionSwitch] -> s (Module l l d d) -> Module Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[ExtensionSwitch] -> s (Module l l d d) -> Module λ l d s
ExtendedModule
exportClassOrType :: forall l (d :: * -> *) (s :: * -> *).
QualifiedName Language
-> Maybe (Members Language) -> Export Language l d s
exportClassOrType = QualifiedName Language
-> Maybe (Members Language) -> Export Language l d s
QualifiedName Language
-> Maybe (Members Language) -> Export Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> Maybe (Members λ) -> Export λ l d s
ExportClassOrType
exportVar :: forall l (d :: * -> *) (s :: * -> *).
QualifiedName Language -> Export Language l d s
exportVar = QualifiedName Language -> Export Language l d s
QualifiedName Language -> Export Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> Export λ l d s
ExportVar
reExportModule :: forall l (d :: * -> *) (s :: * -> *).
ModuleName Language -> Export Language l d s
reExportModule = ModuleName Language -> Export Language l d s
ModuleName Language -> Export Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
ModuleName λ -> Export λ l d s
ReExportModule
importDeclaration :: forall (s :: * -> *) l (d :: * -> *).
Bool
-> ModuleName Language
-> Maybe (ModuleName Language)
-> Maybe (s (ImportSpecification l l d d))
-> Import Language l d s
importDeclaration Bool
q = Bool
-> Bool
-> Maybe Text
-> ModuleName Language
-> Maybe (ModuleName Language)
-> Maybe (s (ImportSpecification l l d d))
-> Import Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Bool
-> Bool
-> Maybe Text
-> ModuleName λ
-> Maybe (ModuleName λ)
-> Maybe (s (ImportSpecification l l d d))
-> Import λ l d s
Import Bool
False Bool
q Maybe Text
forall a. Maybe a
Nothing
excludedImports :: forall (s :: * -> *) l (d :: * -> *).
[s (ImportItem l l d d)] -> ImportSpecification Language l d s
excludedImports = Bool
-> [s (ImportItem l l d d)] -> ImportSpecification Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Bool -> [s (ImportItem l l d d)] -> ImportSpecification λ l d s
ImportSpecification Bool
False
includedImports :: forall (s :: * -> *) l (d :: * -> *).
[s (ImportItem l l d d)] -> ImportSpecification Language l d s
includedImports = Bool
-> [s (ImportItem l l d d)] -> ImportSpecification Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Bool -> [s (ImportItem l l d d)] -> ImportSpecification λ l d s
ImportSpecification Bool
True
importClassOrType :: forall l (d :: * -> *) (s :: * -> *).
Name Language
-> Maybe (Members Language) -> ImportItem Language l d s
importClassOrType = Name Language
-> Maybe (Members Language) -> ImportItem Language l d s
Name Language
-> Maybe (Members Language) -> ImportItem Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> Maybe (Members λ) -> ImportItem λ l d s
ImportClassOrType
importVar :: forall l (d :: * -> *) (s :: * -> *).
Name Language -> ImportItem Language l d s
importVar = Name Language -> ImportItem Language l d s
Name Language -> ImportItem Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> ImportItem λ l d s
ImportVar
allMembers :: Members Language
allMembers = Members Language
Members Language
forall λ. Members λ
AllMembers
memberList :: [Name Language] -> Members Language
memberList = [Name Language] -> Members Language
[Name Language] -> Members Language
forall λ. [Name λ] -> Members λ
MemberList
classDeclaration :: forall (s :: * -> *) l (d :: * -> *).
s (Context l l d d)
-> s (TypeLHS l l d d)
-> [s (Declaration l l d d)]
-> Declaration Language l d s
classDeclaration = s (Context l l d d)
-> s (TypeLHS l l d d)
-> [s (Declaration l l d d)]
-> Declaration Language l d s
s (Context l l d d)
-> s (TypeLHS l l d d)
-> [s (Declaration l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Context l l d d)
-> s (TypeLHS l l d d)
-> [s (Declaration l l d d)]
-> Declaration λ l d s
ClassDeclaration
dataDeclaration :: forall (s :: * -> *) l (d :: * -> *).
s (Context l l d d)
-> s (TypeLHS l l d d)
-> [s (DataConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
dataDeclaration s (Context l l d d)
context s (TypeLHS l l d d)
lhs = s (Context l l d d)
-> s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (DataConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Context l l d d)
-> s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> [s (DataConstructor l l d d)]
-> [s (DerivingClause l l d d)]
-> Declaration λ l d s
DataDeclaration s (Context l l d d)
context s (TypeLHS l l d d)
lhs Maybe (s (Kind l l d d))
forall a. Maybe a
Nothing
defaultDeclaration :: forall (s :: * -> *) l (d :: * -> *).
[s (Type l l d d)] -> Declaration Language l d s
defaultDeclaration = [s (Type l l d d)] -> Declaration Language l d s
[s (Type l l d d)] -> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[s (Type l l d d)] -> Declaration λ l d s
DefaultDeclaration
equationDeclaration :: forall (s :: * -> *) l (d :: * -> *).
s (EquationLHS l l d d)
-> s (EquationRHS l l d d)
-> [s (Declaration l l d d)]
-> Declaration Language l d s
equationDeclaration = s (EquationLHS l l d d)
-> s (EquationRHS l l d d)
-> [s (Declaration l l d d)]
-> Declaration Language l d s
s (EquationLHS l l d d)
-> s (EquationRHS l l d d)
-> [s (Declaration l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (EquationLHS l l d d)
-> s (EquationRHS l l d d)
-> [s (Declaration l l d d)]
-> Declaration λ l d s
EquationDeclaration
fixityDeclaration :: forall l (d :: * -> *) (s :: * -> *).
Associativity Language
-> Maybe Int
-> NonEmpty (Name Language)
-> Declaration Language l d s
fixityDeclaration = Associativity Language
-> Maybe Int
-> NonEmpty (Name Language)
-> Declaration Language l d s
Associativity Language
-> Maybe Int
-> NonEmpty (Name Language)
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Associativity λ
-> Maybe Int -> NonEmpty (Name λ) -> Declaration λ l d s
FixityDeclaration
foreignExport :: forall (s :: * -> *) l (d :: * -> *).
CallingConvention Language
-> Maybe Text
-> Name Language
-> s (Type l l d d)
-> Declaration Language l d s
foreignExport = CallingConvention Language
-> Maybe Text
-> Name Language
-> s (Type l l d d)
-> Declaration Language l d s
CallingConvention Language
-> Maybe Text
-> Name Language
-> s (Type l l d d)
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
CallingConvention λ
-> Maybe Text -> Name λ -> s (Type l l d d) -> Declaration λ l d s
ForeignExport
foreignImport :: forall (s :: * -> *) l (d :: * -> *).
CallingConvention Language
-> Maybe (CallSafety Language)
-> Maybe Text
-> Name Language
-> s (Type l l d d)
-> Declaration Language l d s
foreignImport = CallingConvention Language
-> Maybe (CallSafety Language)
-> Maybe Text
-> Name Language
-> s (Type l l d d)
-> Declaration Language l d s
CallingConvention Language
-> Maybe (CallSafety Language)
-> Maybe Text
-> Name Language
-> s (Type l l d d)
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
CallingConvention λ
-> Maybe (CallSafety λ)
-> Maybe Text
-> Name λ
-> s (Type l l d d)
-> Declaration λ l d s
ForeignImport
instanceDeclaration :: forall (s :: * -> *) l (d :: * -> *).
s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> [s (Declaration l l d d)]
-> Declaration Language l d s
instanceDeclaration = [TypeVarBinding Language l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> [s (Declaration l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[TypeVarBinding λ l d s]
-> s (Context l l d d)
-> s (ClassInstanceLHS l l d d)
-> [s (Declaration l l d d)]
-> Declaration λ l d s
InstanceDeclaration []
newtypeDeclaration :: forall (s :: * -> *) l (d :: * -> *).
s (Context l l d d)
-> s (TypeLHS l l d d)
-> s (DataConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
newtypeDeclaration s (Context l l d d)
context s (TypeLHS l l d d)
lhs = s (Context l l d d)
-> s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (DataConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Context l l d d)
-> s (TypeLHS l l d d)
-> Maybe (s (Kind l l d d))
-> s (DataConstructor l l d d)
-> [s (DerivingClause l l d d)]
-> Declaration λ l d s
NewtypeDeclaration s (Context l l d d)
context s (TypeLHS l l d d)
lhs Maybe (s (Kind l l d d))
forall a. Maybe a
Nothing
typeSynonymDeclaration :: forall (s :: * -> *) l (d :: * -> *).
s (TypeLHS l l d d)
-> s (Type l l d d) -> Declaration Language l d s
typeSynonymDeclaration = s (TypeLHS l l d d)
-> s (Type l l d d) -> Declaration Language l d s
s (TypeLHS l l d d)
-> s (Type l l d d) -> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (TypeLHS l l d d) -> s (Type l l d d) -> Declaration λ l d s
TypeSynonymDeclaration
typeSignature :: forall (s :: * -> *) l (d :: * -> *).
NonEmpty (Name Language)
-> s (Context l l d d)
-> s (Type l l d d)
-> Declaration Language l d s
typeSignature = NonEmpty (Name Language)
-> s (Context l l d d)
-> s (Type l l d d)
-> Declaration Language l d s
NonEmpty (Name Language)
-> s (Context l l d d)
-> s (Type l l d d)
-> Declaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (Name λ)
-> s (Context l l d d) -> s (Type l l d d) -> Declaration λ l d s
TypeSignature
applyExpression :: forall (s :: * -> *) l (d :: * -> *).
s (Expression l l d d)
-> s (Expression l l d d) -> Expression Language l d s
applyExpression = s (Expression l l d d)
-> s (Expression l l d d) -> Expression Language l d s
s (Expression l l d d)
-> s (Expression l l d d) -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> s (Expression l l d d) -> Expression λ l d s
ApplyExpression
conditionalExpression :: forall (s :: * -> *) l (d :: * -> *).
s (Expression l l d d)
-> s (Expression l l d d)
-> s (Expression l l d d)
-> Expression Language l d s
conditionalExpression = s (Expression l l d d)
-> s (Expression l l d d)
-> s (Expression l l d d)
-> Expression Language l d s
s (Expression l l d d)
-> s (Expression l l d d)
-> s (Expression l l d d)
-> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> s (Expression l l d d)
-> s (Expression l l d d)
-> Expression λ l d s
ConditionalExpression
constructorExpression :: forall (s :: * -> *) l (d :: * -> *).
s (Constructor l l d d) -> Expression Language l d s
constructorExpression = s (Constructor l l d d) -> Expression Language l d s
s (Constructor l l d d) -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Constructor l l d d) -> Expression λ l d s
ConstructorExpression
caseExpression :: forall (s :: * -> *) l (d :: * -> *).
s (Expression l l d d)
-> [s (CaseAlternative l l d d)] -> Expression Language l d s
caseExpression = s (Expression l l d d)
-> [s (CaseAlternative l l d d)] -> Expression Language l d s
s (Expression l l d d)
-> [s (CaseAlternative l l d d)] -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> [s (CaseAlternative l l d d)] -> Expression λ l d s
CaseExpression
doExpression :: forall (s :: * -> *) l (d :: * -> *).
s (GuardedExpression l l d d) -> Expression Language l d s
doExpression = s (GuardedExpression l l d d) -> Expression Language l d s
s (GuardedExpression l l d d) -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (GuardedExpression l l d d) -> Expression λ l d s
DoExpression
infixExpression :: forall (s :: * -> *) l (d :: * -> *).
s (Expression l l d d)
-> s (Expression l l d d)
-> s (Expression l l d d)
-> Expression Language l d s
infixExpression = s (Expression l l d d)
-> s (Expression l l d d)
-> s (Expression l l d d)
-> Expression Language l d s
s (Expression l l d d)
-> s (Expression l l d d)
-> s (Expression l l d d)
-> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> s (Expression l l d d)
-> s (Expression l l d d)
-> Expression λ l d s
InfixExpression
leftSectionExpression :: forall (s :: * -> *) l (d :: * -> *).
s (Expression l l d d)
-> QualifiedName Language -> Expression Language l d s
leftSectionExpression = s (Expression l l d d)
-> QualifiedName Language -> Expression Language l d s
s (Expression l l d d)
-> QualifiedName Language -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d) -> QualifiedName λ -> Expression λ l d s
LeftSectionExpression
lambdaExpression :: forall (s :: * -> *) l (d :: * -> *).
[s (Pattern l l d d)]
-> s (Expression l l d d) -> Expression Language l d s
lambdaExpression = [s (Pattern l l d d)]
-> s (Expression l l d d) -> Expression Language l d s
[s (Pattern l l d d)]
-> s (Expression l l d d) -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[s (Pattern l l d d)]
-> s (Expression l l d d) -> Expression λ l d s
LambdaExpression
letExpression :: forall (s :: * -> *) l (d :: * -> *).
[s (Declaration l l d d)]
-> s (Expression l l d d) -> Expression Language l d s
letExpression = [s (Declaration l l d d)]
-> s (Expression l l d d) -> Expression Language l d s
[s (Declaration l l d d)]
-> s (Expression l l d d) -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[s (Declaration l l d d)]
-> s (Expression l l d d) -> Expression λ l d s
LetExpression
listComprehension :: forall (s :: * -> *) l (d :: * -> *).
s (Expression l l d d)
-> NonEmpty (s (Statement l l d d)) -> Expression Language l d s
listComprehension = s (Expression l l d d)
-> NonEmpty (s (Statement l l d d)) -> Expression Language l d s
s (Expression l l d d)
-> NonEmpty (s (Statement l l d d)) -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> NonEmpty (s (Statement l l d d)) -> Expression λ l d s
ListComprehension
listExpression :: forall (s :: * -> *) l (d :: * -> *).
[s (Expression l l d d)] -> Expression Language l d s
listExpression = [s (Expression l l d d)] -> Expression Language l d s
[s (Expression l l d d)] -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[s (Expression l l d d)] -> Expression λ l d s
ListExpression
literalExpression :: forall (s :: * -> *) l (d :: * -> *).
s (Value l l d d) -> Expression Language l d s
literalExpression = s (Value l l d d) -> Expression Language l d s
s (Value l l d d) -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Value l l d d) -> Expression λ l d s
LiteralExpression
negate :: forall l (d :: * -> *) (s :: * -> *). Expression Language l d s
negate = Expression Language l d s
Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Expression λ l d s
Negate
recordExpression :: forall (s :: * -> *) l (d :: * -> *).
s (Expression l l d d)
-> [s (FieldBinding l l d d)] -> Expression Language l d s
recordExpression = s (Expression l l d d)
-> [s (FieldBinding l l d d)] -> Expression Language l d s
s (Expression l l d d)
-> [s (FieldBinding l l d d)] -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> [s (FieldBinding l l d d)] -> Expression λ l d s
RecordExpression
referenceExpression :: forall l (d :: * -> *).
QualifiedName Language -> Expression Language l d d
referenceExpression = QualifiedName Language -> Expression Language l d d
QualifiedName Language -> Expression Language l d d
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> Expression λ l d s
ReferenceExpression
rightSectionExpression :: forall (s :: * -> *) l (d :: * -> *).
QualifiedName Language
-> s (Expression l l d d) -> Expression Language l d s
rightSectionExpression = QualifiedName Language
-> s (Expression l l d d) -> Expression Language l d s
QualifiedName Language
-> s (Expression l l d d) -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> s (Expression l l d d) -> Expression λ l d s
RightSectionExpression
sequenceExpression :: forall (s :: * -> *) l (d :: * -> *).
s (Expression l l d d)
-> Maybe (s (Expression l l d d))
-> Maybe (s (Expression l l d d))
-> Expression Language l d s
sequenceExpression = s (Expression l l d d)
-> Maybe (s (Expression l l d d))
-> Maybe (s (Expression l l d d))
-> Expression Language l d s
s (Expression l l d d)
-> Maybe (s (Expression l l d d))
-> Maybe (s (Expression l l d d))
-> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d)
-> Maybe (s (Expression l l d d))
-> Maybe (s (Expression l l d d))
-> Expression λ l d s
SequenceExpression
tupleExpression :: forall (s :: * -> *) l (d :: * -> *).
NonEmpty (s (Expression l l d d)) -> Expression Language l d s
tupleExpression = NonEmpty (s (Expression l l d d)) -> Expression Language l d s
NonEmpty (s (Expression l l d d)) -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (s (Expression l l d d)) -> Expression λ l d s
TupleExpression
typedExpression :: forall (s :: * -> *) l (d :: * -> *).
s (Expression l l d d)
-> s (Type l l d d) -> Expression Language l d s
typedExpression = s (Expression l l d d)
-> s (Type l l d d) -> Expression Language l d s
s (Expression l l d d)
-> s (Type l l d d) -> Expression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d) -> s (Type l l d d) -> Expression λ l d s
TypedExpression
asPattern :: forall (s :: * -> *) l (d :: * -> *).
Name Language -> s (Pattern l l d d) -> Pattern Language l d s
asPattern = Name Language -> s (Pattern l l d d) -> Pattern Language l d s
Name Language -> s (Pattern l l d d) -> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> s (Pattern l l d d) -> Pattern λ l d s
AsPattern
constructorPattern :: forall (s :: * -> *) l (d :: * -> *).
s (Constructor l l d d)
-> [s (Pattern l l d d)] -> Pattern Language l d s
constructorPattern = (s (Constructor l l d d)
-> [s (Type l l d d)]
-> [s (Pattern l l d d)]
-> Pattern Language l d s)
-> [s (Type l l d d)]
-> s (Constructor l l d d)
-> [s (Pattern l l d d)]
-> Pattern Language l d s
forall a b c. (a -> b -> c) -> b -> a -> c
flip s (Constructor l l d d)
-> [s (Type l l d d)]
-> [s (Pattern l l d d)]
-> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Constructor l l d d)
-> [s (Type l l d d)] -> [s (Pattern l l d d)] -> Pattern λ l d s
ConstructorPattern []
infixPattern :: forall (s :: * -> *) l (d :: * -> *).
s (Pattern l l d d)
-> QualifiedName Language
-> s (Pattern l l d d)
-> Pattern Language l d s
infixPattern = s (Pattern l l d d)
-> QualifiedName Language
-> s (Pattern l l d d)
-> Pattern Language l d s
s (Pattern l l d d)
-> QualifiedName Language
-> s (Pattern l l d d)
-> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Pattern l l d d)
-> QualifiedName λ -> s (Pattern l l d d) -> Pattern λ l d s
InfixPattern
irrefutablePattern :: forall (s :: * -> *) l (d :: * -> *).
s (Pattern l l d d) -> Pattern Language l d s
irrefutablePattern = s (Pattern l l d d) -> Pattern Language l d s
s (Pattern l l d d) -> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Pattern l l d d) -> Pattern λ l d s
IrrefutablePattern
listPattern :: forall (s :: * -> *) l (d :: * -> *).
[s (Pattern l l d d)] -> Pattern Language l d s
listPattern = [s (Pattern l l d d)] -> Pattern Language l d s
[s (Pattern l l d d)] -> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[s (Pattern l l d d)] -> Pattern λ l d s
ListPattern
literalPattern :: forall (s :: * -> *) l (d :: * -> *).
s (Value l l d d) -> Pattern Language l d s
literalPattern = s (Value l l d d) -> Pattern Language l d s
s (Value l l d d) -> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Value l l d d) -> Pattern λ l d s
LiteralPattern
recordPattern :: forall (s :: * -> *) l (d :: * -> *).
QualifiedName Language
-> [s (FieldPattern l l d d)] -> Pattern Language l d s
recordPattern = QualifiedName Language
-> [s (FieldPattern l l d d)] -> Pattern Language l d s
QualifiedName Language
-> [s (FieldPattern l l d d)] -> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> [s (FieldPattern l l d d)] -> Pattern λ l d s
RecordPattern
tuplePattern :: forall (s :: * -> *) l (d :: * -> *).
NonEmpty (s (Pattern l l d d)) -> Pattern Language l d s
tuplePattern = NonEmpty (s (Pattern l l d d)) -> Pattern Language l d s
NonEmpty (s (Pattern l l d d)) -> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (s (Pattern l l d d)) -> Pattern λ l d s
TuplePattern
variablePattern :: forall l (d :: * -> *) (s :: * -> *).
Name Language -> Pattern Language l d s
variablePattern = Name Language -> Pattern Language l d s
Name Language -> Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Name λ -> Pattern λ l d s
VariablePattern
wildcardPattern :: forall l (d :: * -> *) (s :: * -> *). Pattern Language l d s
wildcardPattern = Pattern Language l d s
Pattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Pattern λ l d s
WildcardPattern
constructorType :: forall (s :: * -> *) l (d :: * -> *).
s (Constructor l l d d) -> Type Language l d s
constructorType = s (Constructor l l d d) -> Type Language l d s
s (Constructor l l d d) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Constructor l l d d) -> Type λ l d s
ConstructorType
functionConstructorType :: forall l (d :: * -> *) (s :: * -> *). Type Language l d s
functionConstructorType = Type Language l d s
Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Type λ l d s
FunctionConstructorType
functionType :: forall (s :: * -> *) l (d :: * -> *).
s (Type l l d d) -> s (Type l l d d) -> Type Language l d s
functionType = s (Type l l d d) -> s (Type l l d d) -> Type Language l d s
s (Type l l d d) -> s (Type l l d d) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> s (Type l l d d) -> Type λ l d s
FunctionType
listType :: forall (s :: * -> *) l (d :: * -> *).
s (Type l l d d) -> Type Language l d s
listType = s (Type l l d d) -> Type Language l d s
s (Type l l d d) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> Type λ l d s
ListType
strictType :: forall (s :: * -> *) l (d :: * -> *).
s (Type l l d d) -> Type Language l d s
strictType = s (Type l l d d) -> Type Language l d s
s (Type l l d d) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> Type λ l d s
StrictType
tupleType :: forall (s :: * -> *) l (d :: * -> *).
NonEmpty (s (Type l l d d)) -> Type Language l d s
tupleType = NonEmpty (s (Type l l d d)) -> Type Language l d s
NonEmpty (s (Type l l d d)) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (s (Type l l d d)) -> Type λ l d s
TupleType
typeApplication :: forall (s :: * -> *) l (d :: * -> *).
s (Type l l d d) -> s (Type l l d d) -> Type Language l d s
typeApplication = s (Type l l d d) -> s (Type l l d d) -> Type Language l d s
s (Type l l d d) -> s (Type l l d d) -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Type l l d d) -> s (Type l l d d) -> Type λ l d s
TypeApplication
typeVariable :: forall l (d :: * -> *) (s :: * -> *).
Name Language -> Type Language l d s
typeVariable = Name Language -> Type Language l d s
Name Language -> Type Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Name λ -> Type λ l d s
TypeVariable
constructorReference :: forall l (d :: * -> *) (s :: * -> *).
QualifiedName Language -> Constructor Language l d s
constructorReference = QualifiedName Language -> Constructor Language l d s
QualifiedName Language -> Constructor Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> Constructor λ l d s
ConstructorReference
emptyListConstructor :: forall l (d :: * -> *) (s :: * -> *). Constructor Language l d s
emptyListConstructor = Constructor Language l d s
Constructor Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Constructor λ l d s
EmptyListConstructor
tupleConstructor :: forall l (d :: * -> *) (s :: * -> *).
Int -> Constructor Language l d s
tupleConstructor = Int -> Constructor Language l d s
Int -> Constructor Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Int -> Constructor λ l d s
TupleConstructor
unitConstructor :: forall l (d :: * -> *) (s :: * -> *). Constructor Language l d s
unitConstructor = Constructor Language l d s
Constructor Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Constructor λ l d s
UnitConstructor
constructor :: forall (s :: * -> *) l (d :: * -> *).
Name Language
-> [s (Type l l d d)] -> DataConstructor Language l d s
constructor = Name Language
-> [s (Type l l d d)] -> DataConstructor Language l d s
Name Language
-> [s (Type l l d d)] -> DataConstructor Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> [s (Type l l d d)] -> DataConstructor λ l d s
Constructor
recordConstructor :: forall (s :: * -> *) l (d :: * -> *).
Name Language
-> [s (FieldDeclaration l l d d)] -> DataConstructor Language l d s
recordConstructor = Name Language
-> [s (FieldDeclaration l l d d)] -> DataConstructor Language l d s
Name Language
-> [s (FieldDeclaration l l d d)] -> DataConstructor Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> [s (FieldDeclaration l l d d)] -> DataConstructor λ l d s
RecordConstructor
constructorFields :: forall (s :: * -> *) l (d :: * -> *).
NonEmpty (Name Language)
-> s (Type l l d d) -> FieldDeclaration Language l d s
constructorFields = NonEmpty (Name Language)
-> s (Type l l d d) -> FieldDeclaration Language l d s
NonEmpty (Name Language)
-> s (Type l l d d) -> FieldDeclaration Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (Name λ) -> s (Type l l d d) -> FieldDeclaration λ l d s
ConstructorFields
fieldBinding :: forall (s :: * -> *) l (d :: * -> *).
QualifiedName Language
-> s (Expression l l d d) -> FieldBinding Language l d s
fieldBinding = QualifiedName Language
-> s (Expression l l d d) -> FieldBinding Language l d s
QualifiedName Language
-> s (Expression l l d d) -> FieldBinding Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> s (Expression l l d d) -> FieldBinding λ l d s
FieldBinding
fieldPattern :: forall (s :: * -> *) l (d :: * -> *).
QualifiedName Language
-> s (Pattern l l d d) -> FieldPattern Language l d s
fieldPattern = QualifiedName Language
-> s (Pattern l l d d) -> FieldPattern Language l d s
QualifiedName Language
-> s (Pattern l l d d) -> FieldPattern Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> s (Pattern l l d d) -> FieldPattern λ l d s
FieldPattern
simpleDerive :: forall l (d :: * -> *) (s :: * -> *).
QualifiedName Language -> DerivingClause Language l d s
simpleDerive = QualifiedName Language -> DerivingClause Language l d s
QualifiedName Language -> DerivingClause Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> DerivingClause λ l d s
SimpleDerive
typeClassInstanceLHS :: forall (s :: * -> *) l (d :: * -> *).
QualifiedName Language
-> s (Type l l d d) -> ClassInstanceLHS Language l d s
typeClassInstanceLHS = QualifiedName Language
-> s (Type l l d d) -> ClassInstanceLHS Language l d s
QualifiedName Language
-> s (Type l l d d) -> ClassInstanceLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> s (Type l l d d) -> ClassInstanceLHS λ l d s
TypeClassInstanceLHS
simpleTypeLHS :: forall l (d :: * -> *) (s :: * -> *).
Name Language -> [Name Language] -> TypeLHS Language l d s
simpleTypeLHS Name Language
con = Name Language
-> [TypeVarBinding Language l d s] -> TypeLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> [TypeVarBinding λ l d s] -> TypeLHS λ l d s
SimpleTypeLHS Name Language
con ([TypeVarBinding Language l d s] -> TypeLHS Language l d s)
-> ([Name Language] -> [TypeVarBinding Language l d s])
-> [Name Language]
-> TypeLHS Language l d s
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Name Language -> TypeVarBinding Language l d s)
-> [Name Language] -> [TypeVarBinding Language l d s]
forall a b. (a -> b) -> [a] -> [b]
map Name Language -> TypeVarBinding Language l d s
Name Language -> TypeVarBinding Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
ExtendedHaskell λ =>
Name λ -> TypeVarBinding λ l d s
forall l (d :: * -> *) (s :: * -> *).
Name Language -> TypeVarBinding Language l d s
Abstract.implicitlyKindedTypeVariable
prefixLHS :: forall (s :: * -> *) l (d :: * -> *).
s (EquationLHS l l d d)
-> NonEmpty (s (Pattern l l d d)) -> EquationLHS Language l d s
prefixLHS = s (EquationLHS l l d d)
-> NonEmpty (s (Pattern l l d d)) -> EquationLHS Language l d s
s (EquationLHS l l d d)
-> NonEmpty (s (Pattern l l d d)) -> EquationLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (EquationLHS l l d d)
-> NonEmpty (s (Pattern l l d d)) -> EquationLHS λ l d s
PrefixLHS
infixLHS :: forall (s :: * -> *) l (d :: * -> *).
s (Pattern l l d d)
-> Name Language
-> s (Pattern l l d d)
-> EquationLHS Language l d s
infixLHS = s (Pattern l l d d)
-> Name Language
-> s (Pattern l l d d)
-> EquationLHS Language l d s
s (Pattern l l d d)
-> Name Language
-> s (Pattern l l d d)
-> EquationLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Pattern l l d d)
-> Name λ -> s (Pattern l l d d) -> EquationLHS λ l d s
InfixLHS
patternLHS :: forall (s :: * -> *) l (d :: * -> *).
s (Pattern l l d d) -> EquationLHS Language l d s
patternLHS = s (Pattern l l d d) -> EquationLHS Language l d s
s (Pattern l l d d) -> EquationLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Pattern l l d d) -> EquationLHS λ l d s
PatternLHS
variableLHS :: forall l (d :: * -> *) (s :: * -> *).
Name Language -> EquationLHS Language l d s
variableLHS = Name Language -> EquationLHS Language l d s
Name Language -> EquationLHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
Name λ -> EquationLHS λ l d s
VariableLHS
caseAlternative :: forall (s :: * -> *) l (d :: * -> *).
s (Pattern l l d d)
-> s (EquationRHS l l d d)
-> [s (Declaration l l d d)]
-> CaseAlternative Language l d s
caseAlternative = s (Pattern l l d d)
-> s (EquationRHS l l d d)
-> [s (Declaration l l d d)]
-> CaseAlternative Language l d s
s (Pattern l l d d)
-> s (EquationRHS l l d d)
-> [s (Declaration l l d d)]
-> CaseAlternative Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Pattern l l d d)
-> s (EquationRHS l l d d)
-> [s (Declaration l l d d)]
-> CaseAlternative λ l d s
CaseAlternative
guardedRHS :: forall (s :: * -> *) l (d :: * -> *).
NonEmpty (s (GuardedExpression l l d d))
-> EquationRHS Language l d s
guardedRHS = NonEmpty (s (GuardedExpression l l d d))
-> EquationRHS Language l d s
NonEmpty (s (GuardedExpression l l d d))
-> EquationRHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
NonEmpty (s (GuardedExpression l l d d)) -> EquationRHS λ l d s
GuardedRHS
normalRHS :: forall (s :: * -> *) l (d :: * -> *).
s (Expression l l d d) -> EquationRHS Language l d s
normalRHS = s (Expression l l d d) -> EquationRHS Language l d s
s (Expression l l d d) -> EquationRHS Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d) -> EquationRHS λ l d s
NormalRHS
guardedExpression :: forall (s :: * -> *) l (d :: * -> *).
[s (Statement l l d d)]
-> s (Expression l l d d) -> GuardedExpression Language l d s
guardedExpression = [s (Statement l l d d)]
-> s (Expression l l d d) -> GuardedExpression Language l d s
[s (Statement l l d d)]
-> s (Expression l l d d) -> GuardedExpression Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[s (Statement l l d d)]
-> s (Expression l l d d) -> GuardedExpression λ l d s
GuardedExpression
classConstraint :: forall (s :: * -> *) l (d :: * -> *).
QualifiedName Language
-> s (Type l l d d) -> Context Language l d s
classConstraint QualifiedName Language
cls s (Type l l d d)
t = QualifiedName Language
-> s (Type l l d d) -> Context Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
QualifiedName λ -> s (Type l l d d) -> Context λ l d s
ClassConstraint QualifiedName Language
cls s (Type l l d d)
t
constraints :: forall (s :: * -> *) l (d :: * -> *).
[s (Context l l d d)] -> Context Language l d s
constraints = [s (Context l l d d)] -> Context Language l d s
[s (Context l l d d)] -> Context Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[s (Context l l d d)] -> Context λ l d s
Constraints
noContext :: forall l (d :: * -> *) (s :: * -> *). Context Language l d s
noContext = Context Language l d s
Context Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Context λ l d s
NoContext
bindStatement :: forall (s :: * -> *) l (d :: * -> *).
s (Pattern l l d d)
-> s (Expression l l d d) -> Statement Language l d s
bindStatement = s (Pattern l l d d)
-> s (Expression l l d d) -> Statement Language l d s
s (Pattern l l d d)
-> s (Expression l l d d) -> Statement Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Pattern l l d d) -> s (Expression l l d d) -> Statement λ l d s
BindStatement
expressionStatement :: forall (s :: * -> *) l (d :: * -> *).
s (Expression l l d d) -> Statement Language l d s
expressionStatement = s (Expression l l d d) -> Statement Language l d s
s (Expression l l d d) -> Statement Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
s (Expression l l d d) -> Statement λ l d s
ExpressionStatement
letStatement :: forall (s :: * -> *) l (d :: * -> *).
[s (Declaration l l d d)] -> Statement Language l d s
letStatement = [s (Declaration l l d d)] -> Statement Language l d s
[s (Declaration l l d d)] -> Statement Language l d s
forall λ l (d :: * -> *) (s :: * -> *).
[s (Declaration l l d d)] -> Statement λ l d s
LetStatement
charLiteral :: forall l (d :: * -> *) (s :: * -> *). Char -> Value Language l d s
charLiteral = Char -> Value Language l d s
Char -> Value Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Char -> Value λ l d s
CharLiteral
floatingLiteral :: forall l (d :: * -> *) (s :: * -> *).
Rational -> Value Language l d s
floatingLiteral = Rational -> Value Language l d s
Rational -> Value Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Rational -> Value λ l d s
FloatingLiteral
integerLiteral :: forall l (d :: * -> *) (s :: * -> *).
Integer -> Value Language l d s
integerLiteral = Integer -> Value Language l d s
Integer -> Value Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Integer -> Value λ l d s
IntegerLiteral
stringLiteral :: forall l (d :: * -> *) (s :: * -> *). Text -> Value Language l d s
stringLiteral = Text -> Value Language l d s
Text -> Value Language l d s
forall λ l (d :: * -> *) (s :: * -> *). Text -> Value λ l d s
StringLiteral
name :: Text -> Name Language
name = Text -> Name Language
Text -> Name Language
forall λ. Text -> Name λ
Name
moduleName :: NonEmpty (Name Language) -> ModuleName Language
moduleName = NonEmpty (Name Language) -> ModuleName Language
NonEmpty (Name Language) -> ModuleName Language
forall λ. NonEmpty (Name λ) -> ModuleName λ
ModuleName
qualifiedName :: Maybe (ModuleName Language)
-> Name Language -> QualifiedName Language
qualifiedName = Maybe (ModuleName Language)
-> Name Language -> QualifiedName Language
Maybe (ModuleName Language)
-> Name Language -> QualifiedName Language
forall λ. Maybe (ModuleName λ) -> Name λ -> QualifiedName λ
QualifiedName
nonAssociative :: Associativity Language
nonAssociative = Associativity Language
Associativity Language
forall λ. Associativity λ
NonAssociative
leftAssociative :: Associativity Language
leftAssociative = Associativity Language
Associativity Language
forall λ. Associativity λ
LeftAssociative
rightAssociative :: Associativity Language
rightAssociative = Associativity Language
Associativity Language
forall λ. Associativity λ
RightAssociative
cCall :: CallingConvention Language
cCall = CallingConvention Language
CallingConvention Language
forall λ. CallingConvention λ
CCall
cppCall :: CallingConvention Language
cppCall = CallingConvention Language
CallingConvention Language
forall λ. CallingConvention λ
CppCall
dotNetCall :: CallingConvention Language
dotNetCall = CallingConvention Language
CallingConvention Language
forall λ. CallingConvention λ
DotNetCall
jvmCall :: CallingConvention Language
jvmCall = CallingConvention Language
CallingConvention Language
forall λ. CallingConvention λ
JvmCall
stdCall :: CallingConvention Language
stdCall = CallingConvention Language
CallingConvention Language
forall λ. CallingConvention λ
StdCall
safeCall :: CallSafety Language
safeCall = CallSafety Language
CallSafety Language
forall λ. CallSafety λ
SafeCall
unsafeCall :: CallSafety Language
unsafeCall = CallSafety Language
CallSafety Language
forall λ. CallSafety λ
UnsafeCall
data Export λ l (d :: Kind.Type -> Kind.Type) (s :: Kind.Type -> Kind.Type) =
ExportClassOrType (Abstract.QualifiedName λ) (Maybe (Abstract.Members λ))
| ExportVar (Abstract.QualifiedName λ)
| ExportPattern (Abstract.QualifiedName λ)
| ReExportModule (Abstract.ModuleName λ)
data Import λ l d s = Import Bool Bool (Maybe Text) (Abstract.ModuleName λ) (Maybe (Abstract.ModuleName λ))
(Maybe (s (Abstract.ImportSpecification l l d d)))
data ImportItem λ l (d :: Kind.Type -> Kind.Type) (s :: Kind.Type -> Kind.Type) =
ImportClassOrType (Abstract.Name λ) (Maybe (Abstract.Members λ))
| ImportVar (Abstract.Name λ)
| ImportPattern (Abstract.Name λ)
data Members λ = AllMembers
| AllMembersPlus [Name λ]
| MemberList [Name λ]
| ExplicitlyNamespacedMemberList !(Abstract.SupportFor 'Extensions.ExplicitNamespaces λ)
[ModuleMember λ]
data ModuleMember λ = DefaultMember (Name λ)
| PatternMember (Name λ)
| TypeMember (Name λ)
deriving (Typeable (ModuleMember λ)
Typeable (ModuleMember λ) =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ModuleMember λ -> c (ModuleMember λ))
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (ModuleMember λ))
-> (ModuleMember λ -> Constr)
-> (ModuleMember λ -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (ModuleMember λ)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (ModuleMember λ)))
-> ((forall b. Data b => b -> b)
-> ModuleMember λ -> ModuleMember λ)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ModuleMember λ -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ModuleMember λ -> r)
-> (forall u.
(forall d. Data d => d -> u) -> ModuleMember λ -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> ModuleMember λ -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> ModuleMember λ -> m (ModuleMember λ))
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> ModuleMember λ -> m (ModuleMember λ))
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> ModuleMember λ -> m (ModuleMember λ))
-> Data (ModuleMember λ)
ModuleMember λ -> Constr
ModuleMember λ -> DataType
(forall b. Data b => b -> b) -> ModuleMember λ -> ModuleMember λ
forall λ. Data λ => Typeable (ModuleMember λ)
forall λ. Data λ => ModuleMember λ -> Constr
forall λ. Data λ => ModuleMember λ -> DataType
forall λ.
Data λ =>
(forall b. Data b => b -> b) -> ModuleMember λ -> ModuleMember λ
forall λ u.
Data λ =>
Int -> (forall d. Data d => d -> u) -> ModuleMember λ -> u
forall λ u.
Data λ =>
(forall d. Data d => d -> u) -> ModuleMember λ -> [u]
forall λ r r'.
Data λ =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ModuleMember λ -> r
forall λ r r'.
Data λ =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ModuleMember λ -> r
forall λ (m :: * -> *).
(Data λ, Monad m) =>
(forall d. Data d => d -> m d)
-> ModuleMember λ -> m (ModuleMember λ)
forall λ (m :: * -> *).
(Data λ, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> ModuleMember λ -> m (ModuleMember λ)
forall λ (c :: * -> *).
Data λ =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (ModuleMember λ)
forall λ (c :: * -> *).
Data λ =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ModuleMember λ -> c (ModuleMember λ)
forall λ (t :: * -> *) (c :: * -> *).
(Data λ, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (ModuleMember λ))
forall λ (t :: * -> * -> *) (c :: * -> *).
(Data λ, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (ModuleMember λ))
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int -> (forall d. Data d => d -> u) -> ModuleMember λ -> u
forall u. (forall d. Data d => d -> u) -> ModuleMember λ -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ModuleMember λ -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ModuleMember λ -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> ModuleMember λ -> m (ModuleMember λ)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> ModuleMember λ -> m (ModuleMember λ)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (ModuleMember λ)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ModuleMember λ -> c (ModuleMember λ)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (ModuleMember λ))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (ModuleMember λ))
$cgfoldl :: forall λ (c :: * -> *).
Data λ =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ModuleMember λ -> c (ModuleMember λ)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ModuleMember λ -> c (ModuleMember λ)
$cgunfold :: forall λ (c :: * -> *).
Data λ =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (ModuleMember λ)
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (ModuleMember λ)
$ctoConstr :: forall λ. Data λ => ModuleMember λ -> Constr
toConstr :: ModuleMember λ -> Constr
$cdataTypeOf :: forall λ. Data λ => ModuleMember λ -> DataType
dataTypeOf :: ModuleMember λ -> DataType
$cdataCast1 :: forall λ (t :: * -> *) (c :: * -> *).
(Data λ, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (ModuleMember λ))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (ModuleMember λ))
$cdataCast2 :: forall λ (t :: * -> * -> *) (c :: * -> *).
(Data λ, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (ModuleMember λ))
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (ModuleMember λ))
$cgmapT :: forall λ.
Data λ =>
(forall b. Data b => b -> b) -> ModuleMember λ -> ModuleMember λ
gmapT :: (forall b. Data b => b -> b) -> ModuleMember λ -> ModuleMember λ
$cgmapQl :: forall λ r r'.
Data λ =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ModuleMember λ -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ModuleMember λ -> r
$cgmapQr :: forall λ r r'.
Data λ =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ModuleMember λ -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ModuleMember λ -> r
$cgmapQ :: forall λ u.
Data λ =>
(forall d. Data d => d -> u) -> ModuleMember λ -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> ModuleMember λ -> [u]
$cgmapQi :: forall λ u.
Data λ =>
Int -> (forall d. Data d => d -> u) -> ModuleMember λ -> u
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> ModuleMember λ -> u
$cgmapM :: forall λ (m :: * -> *).
(Data λ, Monad m) =>
(forall d. Data d => d -> m d)
-> ModuleMember λ -> m (ModuleMember λ)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> ModuleMember λ -> m (ModuleMember λ)
$cgmapMp :: forall λ (m :: * -> *).
(Data λ, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> ModuleMember λ -> m (ModuleMember λ)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> ModuleMember λ -> m (ModuleMember λ)
$cgmapMo :: forall λ (m :: * -> *).
(Data λ, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> ModuleMember λ -> m (ModuleMember λ)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> ModuleMember λ -> m (ModuleMember λ)
Data, ModuleMember λ -> ModuleMember λ -> Bool
(ModuleMember λ -> ModuleMember λ -> Bool)
-> (ModuleMember λ -> ModuleMember λ -> Bool)
-> Eq (ModuleMember λ)
forall λ. ModuleMember λ -> ModuleMember λ -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall λ. ModuleMember λ -> ModuleMember λ -> Bool
== :: ModuleMember λ -> ModuleMember λ -> Bool
$c/= :: forall λ. ModuleMember λ -> ModuleMember λ -> Bool
/= :: ModuleMember λ -> ModuleMember λ -> Bool
Eq, Int -> ModuleMember λ -> ShowS
[ModuleMember λ] -> ShowS
ModuleMember λ -> String
(Int -> ModuleMember λ -> ShowS)
-> (ModuleMember λ -> String)
-> ([ModuleMember λ] -> ShowS)
-> Show (ModuleMember λ)
forall λ. Int -> ModuleMember λ -> ShowS
forall λ. [ModuleMember λ] -> ShowS
forall λ. ModuleMember λ -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall λ. Int -> ModuleMember λ -> ShowS
showsPrec :: Int -> ModuleMember λ -> ShowS
$cshow :: forall λ. ModuleMember λ -> String
show :: ModuleMember λ -> String
$cshowList :: forall λ. [ModuleMember λ] -> ShowS
showList :: [ModuleMember λ] -> ShowS
Show)
data TypeRole λ = InferredRole
| NominalRole
| RepresentationalRole
| PhantomRole
deriving (Typeable (TypeRole λ)
Typeable (TypeRole λ) =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> TypeRole λ -> c (TypeRole λ))
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (TypeRole λ))
-> (TypeRole λ -> Constr)
-> (TypeRole λ -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (TypeRole λ)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (TypeRole λ)))
-> ((forall b. Data b => b -> b) -> TypeRole λ -> TypeRole λ)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> TypeRole λ -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> TypeRole λ -> r)
-> (forall u. (forall d. Data d => d -> u) -> TypeRole λ -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> TypeRole λ -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> TypeRole λ -> m (TypeRole λ))
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TypeRole λ -> m (TypeRole λ))
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TypeRole λ -> m (TypeRole λ))
-> Data (TypeRole λ)
TypeRole λ -> Constr
TypeRole λ -> DataType
(forall b. Data b => b -> b) -> TypeRole λ -> TypeRole λ
forall λ. Data λ => Typeable (TypeRole λ)
forall λ. Data λ => TypeRole λ -> Constr
forall λ. Data λ => TypeRole λ -> DataType
forall λ.
Data λ =>
(forall b. Data b => b -> b) -> TypeRole λ -> TypeRole λ
forall λ u.
Data λ =>
Int -> (forall d. Data d => d -> u) -> TypeRole λ -> u
forall λ u.
Data λ =>
(forall d. Data d => d -> u) -> TypeRole λ -> [u]
forall λ r r'.
Data λ =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> TypeRole λ -> r
forall λ r r'.
Data λ =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> TypeRole λ -> r
forall λ (m :: * -> *).
(Data λ, Monad m) =>
(forall d. Data d => d -> m d) -> TypeRole λ -> m (TypeRole λ)
forall λ (m :: * -> *).
(Data λ, MonadPlus m) =>
(forall d. Data d => d -> m d) -> TypeRole λ -> m (TypeRole λ)
forall λ (c :: * -> *).
Data λ =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (TypeRole λ)
forall λ (c :: * -> *).
Data λ =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> TypeRole λ -> c (TypeRole λ)
forall λ (t :: * -> *) (c :: * -> *).
(Data λ, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (TypeRole λ))
forall λ (t :: * -> * -> *) (c :: * -> *).
(Data λ, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (TypeRole λ))
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> TypeRole λ -> u
forall u. (forall d. Data d => d -> u) -> TypeRole λ -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> TypeRole λ -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> TypeRole λ -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> TypeRole λ -> m (TypeRole λ)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TypeRole λ -> m (TypeRole λ)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (TypeRole λ)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> TypeRole λ -> c (TypeRole λ)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (TypeRole λ))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (TypeRole λ))
$cgfoldl :: forall λ (c :: * -> *).
Data λ =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> TypeRole λ -> c (TypeRole λ)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> TypeRole λ -> c (TypeRole λ)
$cgunfold :: forall λ (c :: * -> *).
Data λ =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (TypeRole λ)
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (TypeRole λ)
$ctoConstr :: forall λ. Data λ => TypeRole λ -> Constr
toConstr :: TypeRole λ -> Constr
$cdataTypeOf :: forall λ. Data λ => TypeRole λ -> DataType
dataTypeOf :: TypeRole λ -> DataType
$cdataCast1 :: forall λ (t :: * -> *) (c :: * -> *).
(Data λ, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (TypeRole λ))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (TypeRole λ))
$cdataCast2 :: forall λ (t :: * -> * -> *) (c :: * -> *).
(Data λ, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (TypeRole λ))
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (TypeRole λ))
$cgmapT :: forall λ.
Data λ =>
(forall b. Data b => b -> b) -> TypeRole λ -> TypeRole λ
gmapT :: (forall b. Data b => b -> b) -> TypeRole λ -> TypeRole λ
$cgmapQl :: forall λ r r'.
Data λ =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> TypeRole λ -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> TypeRole λ -> r
$cgmapQr :: forall λ r r'.
Data λ =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> TypeRole λ -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> TypeRole λ -> r
$cgmapQ :: forall λ u.
Data λ =>
(forall d. Data d => d -> u) -> TypeRole λ -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> TypeRole λ -> [u]
$cgmapQi :: forall λ u.
Data λ =>
Int -> (forall d. Data d => d -> u) -> TypeRole λ -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> TypeRole λ -> u
$cgmapM :: forall λ (m :: * -> *).
(Data λ, Monad m) =>
(forall d. Data d => d -> m d) -> TypeRole λ -> m (TypeRole λ)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> TypeRole λ -> m (TypeRole λ)
$cgmapMp :: forall λ (m :: * -> *).
(Data λ, MonadPlus m) =>
(forall d. Data d => d -> m d) -> TypeRole λ -> m (TypeRole λ)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TypeRole λ -> m (TypeRole λ)
$cgmapMo :: forall λ (m :: * -> *).
(Data λ, MonadPlus m) =>
(forall d. Data d => d -> m d) -> TypeRole λ -> m (TypeRole λ)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TypeRole λ -> m (TypeRole λ)
Data, TypeRole λ -> TypeRole λ -> Bool
(TypeRole λ -> TypeRole λ -> Bool)
-> (TypeRole λ -> TypeRole λ -> Bool) -> Eq (TypeRole λ)
forall λ. TypeRole λ -> TypeRole λ -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall λ. TypeRole λ -> TypeRole λ -> Bool
== :: TypeRole λ -> TypeRole λ -> Bool
$c/= :: forall λ. TypeRole λ -> TypeRole λ -> Bool
/= :: TypeRole λ -> TypeRole λ -> Bool
Eq, Int -> TypeRole λ -> ShowS
[TypeRole λ] -> ShowS
TypeRole λ -> String
(Int -> TypeRole λ -> ShowS)
-> (TypeRole λ -> String)
-> ([TypeRole λ] -> ShowS)
-> Show (TypeRole λ)
forall λ. Int -> TypeRole λ -> ShowS
forall λ. [TypeRole λ] -> ShowS
forall λ. TypeRole λ -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall λ. Int -> TypeRole λ -> ShowS
showsPrec :: Int -> TypeRole λ -> ShowS
$cshow :: forall λ. TypeRole λ -> String
show :: TypeRole λ -> String
$cshowList :: forall λ. [TypeRole λ] -> ShowS
showList :: [TypeRole λ] -> ShowS
Show)
data Declaration λ l d s =
ClassDeclaration (s (Abstract.Context l l d d)) (s (Abstract.TypeLHS l l d d)) [s (Abstract.Declaration l l d d)]
| FunDepClassDeclaration !(Abstract.SupportFor 'Extensions.FunctionalDependencies λ)
(s (Abstract.Context l l d d)) (s (Abstract.TypeLHS l l d d))
[s (Abstract.FunctionalDependency l l d d)] [s (Abstract.Declaration l l d d)]
| DataDeclaration (s (Abstract.Context l l d d)) (s (Abstract.TypeLHS l l d d)) (Maybe (s (Abstract.Kind l l d d)))
[s (Abstract.DataConstructor l l d d)] [s (Abstract.DerivingClause l l d d)]
| GADTDeclaration (s (Abstract.TypeLHS l l d d)) (Maybe (s (Abstract.Kind l l d d)))
[s (Abstract.GADTConstructor l l d d)] [s (Abstract.DerivingClause l l d d)]
| TypeDataDeclaration !(Abstract.SupportFor 'Extensions.TypeData λ)
(s (Abstract.TypeLHS l l d d)) (Maybe (s (Abstract.Kind l l d d)))
[s (Abstract.DataConstructor l l d d)]
| TypeGADTDeclaration !(Abstract.SupportFor 'Extensions.GADTs λ)
!(Abstract.SupportFor 'Extensions.TypeData λ)
(s (Abstract.TypeLHS l l d d)) (Maybe (s (Abstract.Kind l l d d)))
[s (Abstract.GADTConstructor l l d d)]
| DefaultDeclaration [s (Abstract.Type l l d d)]
| NamedDefaultDeclaration !(Abstract.SupportFor 'Extensions.NamedDefaults λ)
(Abstract.QualifiedName λ) [s (Abstract.Type l l d d)]
| DefaultMethodSignature !(Abstract.SupportFor 'Extensions.DefaultSignatures λ)
(Name λ) (s (Abstract.Context l l d d)) (s (Abstract.Type l l d d))
| EquationDeclaration (s (Abstract.EquationLHS l l d d)) (s (Abstract.EquationRHS l l d d))
[s (Abstract.Declaration l l d d)]
| FixityDeclaration (Associativity λ) (Maybe Int) (NonEmpty (Abstract.Name λ))
| ExplicitTypeFixityDeclaration !(Abstract.SupportFor 'Extensions.ExplicitNamespaces λ)
(Associativity λ) (Maybe Int) (NonEmpty (Abstract.Name λ))
| ExplicitDataFixityDeclaration !(Abstract.SupportFor 'Extensions.ExplicitNamespaces λ)
(Associativity λ) (Maybe Int) (NonEmpty (Abstract.Name λ))
| ForeignExport (CallingConvention λ) (Maybe Text) (Abstract.Name λ) (s (Abstract.Type l l d d))
| ForeignImport (CallingConvention λ) (Maybe (CallSafety λ)) (Maybe Text) (Abstract.Name λ)
(s (Abstract.Type l l d d))
| InstanceDeclaration [TypeVarBinding λ l d s] (s (Abstract.Context l l d d))
(s (Abstract.ClassInstanceLHS l l d d)) [s (Abstract.Declaration l l d d)]
| StandaloneDerivingDeclaration !(Abstract.SupportFor 'Extensions.StandaloneDeriving λ)
[TypeVarBinding λ l d s]
(s (Abstract.Context l l d d))
(s (Abstract.ClassInstanceLHS l l d d))
| StandaloneStrategicDerivingDeclaration !(Abstract.SupportFor 'Extensions.StandaloneDeriving λ)
!(Abstract.SupportFor 'Extensions.DerivingStrategies λ)
(s (Abstract.DerivingStrategy l l d d))
[TypeVarBinding λ l d s]
(s (Abstract.Context l l d d))
(s (Abstract.ClassInstanceLHS l l d d))
| NewtypeDeclaration (s (Abstract.Context l l d d)) (s (Abstract.TypeLHS l l d d))
(Maybe (s (Abstract.Kind l l d d))) (s (Abstract.DataConstructor l l d d))
[s (Abstract.DerivingClause l l d d)]
| GADTNewtypeDeclaration (s (Abstract.TypeLHS l l d d)) (Maybe (s (Abstract.Kind l l d d)))
(s (Abstract.GADTConstructor l l d d)) [s (Abstract.DerivingClause l l d d)]
| TypeSynonymDeclaration (s (Abstract.TypeLHS l l d d)) (s (Abstract.Type l l d d))
| TypeSignature (NonEmpty (Abstract.Name λ)) (s (Abstract.Context l l d d)) (s (Abstract.Type l l d d))
| DataFamilyDeclaration (s (Abstract.TypeLHS l l d d)) (Maybe (s (Abstract.Kind l l d d)))
| OpenTypeFamilyDeclaration (s (Abstract.TypeLHS l l d d)) (Maybe (s (Abstract.Kind l l d d)))
| ClosedTypeFamilyDeclaration (s (Abstract.TypeLHS l l d d)) (Maybe (s (Abstract.Kind l l d d)))
[s (Abstract.Declaration l l d d)]
| InjectiveOpenTypeFamilyDeclaration (s (Abstract.TypeLHS l l d d)) (TypeVarBinding λ l d s)
(Maybe (Abstract.Name λ, NonEmpty (Abstract.Name λ)))
| InjectiveClosedTypeFamilyDeclaration (s (Abstract.TypeLHS l l d d)) (TypeVarBinding λ l d s)
(Maybe (Abstract.Name λ, NonEmpty (Abstract.Name λ)))
[s (Abstract.Declaration l l d d)]
| DataFamilyInstance [TypeVarBinding λ l d s] (s (Abstract.Context l l d d))
(s (Abstract.ClassInstanceLHS l l d d)) (Maybe (s (Abstract.Kind l l d d)))
[s (Abstract.DataConstructor l l d d)]
[s (Abstract.DerivingClause l l d d)]
| NewtypeFamilyInstance [TypeVarBinding λ l d s] (s (Abstract.Context l l d d))
(s (Abstract.ClassInstanceLHS l l d d)) (Maybe (s (Abstract.Kind l l d d)))
(s (Abstract.DataConstructor l l d d)) [s (Abstract.DerivingClause l l d d)]
| GADTDataFamilyInstance [TypeVarBinding λ l d s] (s (Abstract.ClassInstanceLHS l l d d))
(Maybe (s (Abstract.Kind l l d d)))
[s (Abstract.GADTConstructor l l d d)] [s (Abstract.DerivingClause l l d d)]
| GADTNewtypeFamilyInstance [TypeVarBinding λ l d s] (s (Abstract.ClassInstanceLHS l l d d))
(Maybe (s (Abstract.Kind l l d d)))
(s (Abstract.GADTConstructor l l d d)) [s (Abstract.DerivingClause l l d d)]
| TypeFamilyInstance [TypeVarBinding λ l d s] (s (Abstract.ClassInstanceLHS l l d d))
(s (Abstract.Type l l d d))
| KindSignature (Abstract.Name λ) (s (Abstract.Kind l l d d))
| TypeRoleDeclaration (Abstract.QualifiedName λ) [Abstract.TypeRole λ]
| ImplicitPatternSynonym !(Abstract.SupportFor 'Extensions.PatternSynonyms λ)
(s (Abstract.PatternLHS l l d d)) (s (Abstract.Pattern l l d d))
| UnidirectionalPatternSynonym !(Abstract.SupportFor 'Extensions.PatternSynonyms λ)
(s (Abstract.PatternLHS l l d d)) (s (Abstract.Pattern l l d d))
| ExplicitPatternSynonym !(Abstract.SupportFor 'Extensions.PatternSynonyms λ)
(s (Abstract.PatternLHS l l d d)) (s (Abstract.Pattern l l d d))
[s (Abstract.PatternEquationClause l l d d)]
| PatternSynonymSignature !(Abstract.SupportFor 'Extensions.PatternSynonyms λ)
(NonEmpty (Abstract.Name λ))
[TypeVarBinding λ l d s] (s (Abstract.Context l l d d))
[TypeVarBinding λ l d s] (s (Abstract.Context l l d d))
[s (Abstract.Type l l d d)]
(s (Abstract.Type l l d d))
| ImplicitParameterDeclaration !(Abstract.SupportFor 'Extensions.ImplicitParameters λ)
(Abstract.Name λ)
(s (Abstract.Expression l l d d))
data PatternEquationClause λ l d s =
PatternEquationClause !(Abstract.SupportFor 'Extensions.PatternSynonyms λ)
(s (Abstract.PatternEquationLHS l l d d))
(s (Abstract.EquationRHS l l d d))
[s (Abstract.Declaration l l d d)]
data PatternEquationLHS λ l d s =
PrefixPatternEquationLHS (Abstract.Name λ) [s (Abstract.Pattern l l d d)]
| InfixPatternEquationLHS (s (Abstract.Pattern l l d d)) (Abstract.Name λ) (s (Abstract.Pattern l l d d))
data FunctionalDependency λ l (d :: Kind.Type -> Kind.Type) (s :: Kind.Type -> Kind.Type) =
FunctionalDependency [Abstract.Name λ] [Abstract.Name λ]
data GADTConstructor λ l d s =
GADTConstructors (NonEmpty (Abstract.Name λ)) [TypeVarBinding λ l d s]
(s (Abstract.Context l l d d)) (s (Abstract.Type l l d d))
data DataConstructor λ l d s =
Constructor (Abstract.Name λ) [s (Abstract.Type l l d d)]
| RecordConstructor (Abstract.Name λ) [s (Abstract.FieldDeclaration l l d d)]
| ExistentialConstructor [TypeVarBinding λ l d s] (s (Abstract.Context l l d d)) (s (Abstract.DataConstructor l l d d))
data DerivingClause λ l (d :: Kind.Type -> Kind.Type) (s :: Kind.Type -> Kind.Type) =
SimpleDerive (Abstract.QualifiedName λ)
| StrategicDerive !(Abstract.SupportFor 'Extensions.DerivingStrategies λ)
(s (Abstract.DerivingStrategy l l d d)) [s (Abstract.Type l l d d)]
| DeriveVia !(Abstract.SupportFor 'Extensions.DerivingVia λ)
[s (Abstract.Type l l d d)] (s (Abstract.Type l l d d))
data DerivingStrategy λ l (d :: Kind.Type -> Kind.Type) (s :: Kind.Type -> Kind.Type) =
Default | Stock | AnyClass | Newtype
| Via !(Abstract.SupportFor 'Extensions.DerivingVia λ) (s (Abstract.Type l l d d))
data Context λ l d s =
ClassConstraint (Abstract.QualifiedName λ) (s (Abstract.Type l l d d))
| Constraints [s (Abstract.Context l l d d)]
| TypeConstraint (s (Abstract.Type l l d d))
| TypeEquality (s (Abstract.Type l l d d)) (s (Abstract.Type l l d d))
| ImplicitParameterConstraint !(Abstract.SupportFor 'Extensions.ImplicitParameters λ)
(Abstract.Name λ)
(s (Abstract.Type l l d d))
| NoContext
data Type λ l d s =
ConstructorType (s (Abstract.Constructor l l d d))
| FunctionConstructorType
| FunctionType (s (Abstract.Type l l d d)) (s (Abstract.Type l l d d))
| LinearFunctionType (s (Abstract.Type l l d d)) (s (Abstract.Type l l d d))
| MultiplicityFunctionType (s (Abstract.Type l l d d)) (s (Abstract.Type l l d d)) (s (Abstract.Type l l d d))
| RecordFunctionType [s (Abstract.FieldDeclaration l l d d)] (s (Abstract.Type l l d d))
| ListType (s (Abstract.Type l l d d))
| StrictType (s (Abstract.Type l l d d))
| LazyType !(Abstract.SupportFor 'Extensions.StrictData λ) (s (Abstract.Type l l d d))
| TupleType (NonEmpty (s (Abstract.Type l l d d)))
| UnboxedTupleType !(Abstract.SupportFor 'Extensions.UnboxedTuples λ) (NonEmpty (s (Abstract.Type l l d d)))
| UnboxedSumType !(Abstract.SupportFor 'Extensions.UnboxedSums λ) (NonEmpty (s (Abstract.Type l l d d)))
| TypeApplication (s (Abstract.Type l l d d)) (s (Abstract.Type l l d d))
| InfixTypeApplication (s (Abstract.Type l l d d)) (Abstract.QualifiedName λ) (s (Abstract.Type l l d d))
| TypeVariable (Abstract.Name λ)
| ForallType [TypeVarBinding λ l d s] (s (Abstract.Type l l d d))
| ConstrainedType (s (Abstract.Context l l d d)) (s (Abstract.Type l l d d))
| ConstraintType (s (Abstract.Context l l d d))
| KindedType (s (Abstract.Type l l d d)) (s (Abstract.Kind l l d d))
| TypeWildcard
| TypeKind (s (Abstract.Type l l d d))
| GroundTypeKind
| VisibleDependentType [TypeVarBinding λ l d s] (s (Abstract.Type l l d d))
| PromotedConstructorType (s (Abstract.Constructor l l d d))
| PromotedTupleType [s (Abstract.Type l l d d)]
| PromotedListType [s (Abstract.Type l l d d)]
| PromotedIntegerLiteral Integer
| PromotedCharLiteral Char
| PromotedStringLiteral Text
| PromotedInfixTypeApplication (s (Abstract.Type l l d d)) (Abstract.QualifiedName λ) (s (Abstract.Type l l d d))
| VisibleKindApplication (s (Abstract.Type l l d d)) (s (Abstract.Kind l l d d))
data TypeVarBinding λ l d s =
ExplicitlyKindedTypeVariable Bool (Abstract.Name λ) (s (Abstract.Kind l l d d))
| ImplicitlyKindedTypeVariable Bool (Abstract.Name λ)
data TypeLHS λ l d s =
SimpleTypeLHS (Abstract.Name λ) [TypeVarBinding λ l d s]
| TypeLHSApplication (s (Abstract.TypeLHS l l d d)) (TypeVarBinding λ l d s)
| TypeLHSTypeApplication !(Abstract.SupportFor 'Extensions.TypeAbstractions λ)
(s (Abstract.TypeLHS l l d d))
(TypeVarBinding λ l d s)
data ClassInstanceLHS λ l d s =
TypeClassInstanceLHS (Abstract.QualifiedName λ) (s (Abstract.Type l l d d))
| ClassReferenceInstanceLHS (Abstract.QualifiedName λ)
| InfixTypeClassInstanceLHS (s (Abstract.Type l l d d)) (Abstract.QualifiedName λ) (s (Abstract.Type l l d d))
| ClassInstanceLHSApplication (s (Abstract.ClassInstanceLHS l l d d)) (s (Abstract.Type l l d d))
| ClassInstanceLHSKindApplication (s (Abstract.ClassInstanceLHS l l d d)) (s (Abstract.Kind l l d d))
data Expression λ l d s =
ApplyExpression (s (Abstract.Expression l l d d)) (s (Abstract.Expression l l d d))
| ConditionalExpression (s (Abstract.Expression l l d d)) (s (Abstract.Expression l l d d))
(s (Abstract.Expression l l d d))
| ConstructorExpression (s (Abstract.Constructor l l d d))
| CaseExpression (s (Abstract.Expression l l d d)) [s (Abstract.CaseAlternative l l d d)]
| LambdaCaseExpression !(Abstract.SupportFor 'Extensions.LambdaCase λ) [s (Abstract.CaseAlternative l l d d)]
| LambdaCasesExpression !(Abstract.SupportFor 'Extensions.LambdaCase λ)
[s (Abstract.LambdaCasesAlternative l l d d)]
| MultiWayIfExpression [s (Abstract.GuardedExpression l l d d)]
| DoExpression (s (Abstract.GuardedExpression l l d d))
| MDoExpression (s (Abstract.GuardedExpression l l d d))
| QualifiedDoExpression !(Abstract.SupportFor 'Extensions.QualifiedDo λ)
(Abstract.ModuleName λ) (s (Abstract.GuardedExpression l l d d))
| MDoQualifiedExpression !(Abstract.SupportFor 'Extensions.QualifiedDo λ)
!(Abstract.SupportFor 'Extensions.RecursiveDo λ)
(Abstract.ModuleName λ) (s (Abstract.GuardedExpression l l d d))
| InfixExpression (s (Abstract.Expression l l d d)) (s (Abstract.Expression l l d d))
(s (Abstract.Expression l l d d))
| LeftSectionExpression (s (Abstract.Expression l l d d)) (Abstract.QualifiedName λ)
| LambdaExpression [s (Abstract.Pattern l l d d)] (s (Abstract.Expression l l d d))
| LetExpression [s (Abstract.Declaration l l d d)] (s (Abstract.Expression l l d d))
| ListComprehension (s (Abstract.Expression l l d d)) (NonEmpty (s (Abstract.Statement l l d d)))
| ParallelListComprehension (s (Abstract.Expression l l d d)) (NonEmpty (s (Abstract.Statement l l d d)))
(NonEmpty (s (Abstract.Statement l l d d))) [NonEmpty (s (Abstract.Statement l l d d))]
| ListExpression [s (Abstract.Expression l l d d)]
| LiteralExpression (s (Abstract.Value l l d d))
| Negate
| RecordExpression (s (Abstract.Expression l l d d)) [s (Abstract.FieldBinding l l d d)]
| ReferenceExpression (Abstract.QualifiedName λ)
| RightSectionExpression (Abstract.QualifiedName λ) (s (Abstract.Expression l l d d))
| SequenceExpression (s (Abstract.Expression l l d d)) (Maybe (s (Abstract.Expression l l d d)))
(Maybe (s (Abstract.Expression l l d d)))
| TupleExpression (NonEmpty (s (Abstract.Expression l l d d)))
| TupleSectionExpression (NonEmpty (Maybe (s (Abstract.Expression l l d d))))
| UnboxedSumExpression !(Abstract.SupportFor 'Extensions.UnboxedSums λ)
Int (s (Abstract.Expression l l d d)) Int
| UnboxedTupleExpression !(Abstract.SupportFor 'Extensions.UnboxedTuples λ)
(NonEmpty (s (Abstract.Expression l l d d)))
| UnboxedTupleSectionExpression !(Abstract.SupportFor 'Extensions.UnboxedTuples λ)
(NonEmpty (Maybe (s (Abstract.Expression l l d d))))
| TypedExpression (s (Abstract.Expression l l d d)) (s (Abstract.Type l l d d))
| VisibleTypeApplication (s (Abstract.Expression l l d d)) (s (Abstract.Type l l d d))
| ExplicitTypeExpression !(Abstract.SupportFor 'Extensions.ExplicitNamespaces λ) (s (Abstract.Type l l d d))
| OverloadedLabel Text
| ImplicitParameterExpression !(Abstract.SupportFor 'Extensions.ImplicitParameters λ) (Abstract.Name λ)
| GetField (s (Abstract.Expression l l d d)) (Abstract.Name λ)
| FieldProjection (NonEmpty (Abstract.Name λ))
| WildcardRecordExpression !(Abstract.SupportFor 'Extensions.RecordWildCards λ)
(Abstract.QualifiedName λ)
[s (Abstract.FieldBinding l l d d)]
data LambdaCasesAlternative λ l d s =
LambdaCasesAlternative !(Abstract.SupportFor 'Extensions.LambdaCase λ)
[s (Abstract.Pattern l l d d)] (s (Abstract.EquationRHS l l d d))
data FieldBinding λ l d s =
FieldBinding (Abstract.QualifiedName λ) (s (Abstract.Expression l l d d))
| PunnedFieldBinding (Abstract.QualifiedName λ)
data Pattern λ l d s =
AsPattern (Abstract.Name λ) (s (Abstract.Pattern l l d d))
| ConstructorPattern (s (Abstract.Constructor l l d d)) [s (Abstract.Type l l d d)] [s (Abstract.Pattern l l d d)]
| InfixPattern (s (Abstract.Pattern l l d d)) (Abstract.QualifiedName λ) (s (Abstract.Pattern l l d d))
| IrrefutablePattern (s (Abstract.Pattern l l d d))
| ListPattern [s (Abstract.Pattern l l d d)]
| LiteralPattern (s (Abstract.Value l l d d))
| RecordPattern (Abstract.QualifiedName λ) [s (Abstract.FieldPattern l l d d)]
| WildcardRecordPattern !(Abstract.SupportFor 'Extensions.RecordWildCards λ)
(Abstract.QualifiedName λ)
[s (Abstract.FieldPattern l l d d)]
| TypedPattern (s (Abstract.Pattern l l d d)) (s (Abstract.Type l l d d))
| InvisibleTypePattern !(Abstract.SupportFor 'Extensions.TypeAbstractions λ) (s (Abstract.Type l l d d))
| ExplicitTypePattern !(Abstract.SupportFor 'Extensions.ExplicitNamespaces λ) (s (Abstract.Type l l d d))
| BangPattern !(Abstract.SupportFor 'Extensions.BangPatterns λ) (s (Abstract.Pattern l l d d))
| LazyPattern !(Abstract.SupportFor 'Extensions.Strict λ) (s (Abstract.Pattern l l d d))
| ViewPattern !(Abstract.SupportFor 'Extensions.ViewPatterns λ)
(s (Abstract.Expression l l d d))
(s (Abstract.Pattern l l d d))
| NPlusKPattern !(Abstract.SupportFor 'Extensions.NPlusKPatterns λ) (Abstract.Name λ) Integer
| TuplePattern (NonEmpty (s (Abstract.Pattern l l d d)))
| UnboxedTuplePattern !(Abstract.SupportFor 'Extensions.UnboxedTuples λ) (NonEmpty (s (Abstract.Pattern l l d d)))
| UnboxedSumPattern !(Abstract.SupportFor 'Extensions.UnboxedSums λ)
Int (s (Abstract.Pattern l l d d)) Int
| VariablePattern (Abstract.Name λ)
| WildcardPattern
data PatternLHS λ l (d :: Kind.Type -> Kind.Type) (s :: Kind.Type -> Kind.Type) =
PrefixPatternLHS (Name λ) [Name λ]
| InfixPatternLHS (Name λ) (Name λ) (Name λ)
| RecordPatternLHS (Name λ) [Name λ]
data FieldPattern λ l d s =
FieldPattern (Abstract.QualifiedName λ) (s (Abstract.Pattern l l d d))
| PunnedFieldPattern (Abstract.QualifiedName λ)
data Statement λ l d s =
BindStatement (s (Abstract.Pattern l l d d)) (s (Abstract.Expression l l d d))
| ExpressionStatement (s (Abstract.Expression l l d d))
| LetStatement [s (Abstract.Declaration l l d d)]
| RecursiveStatement [s (Abstract.Statement l l d d)]
data Constructor λ l (d :: Kind.Type -> Kind.Type) (s :: Kind.Type -> Kind.Type) =
ConstructorReference (Abstract.QualifiedName λ)
| EmptyListConstructor
| TupleConstructor Int
| UnboxedTupleConstructor !(Abstract.SupportFor 'Extensions.UnboxedTuples λ) Int
| UnboxedSumConstructor !(Abstract.SupportFor 'Extensions.UnboxedSums λ) Int
| UnitConstructor
data Value λ l (d :: Kind.Type -> Kind.Type) (s :: Kind.Type -> Kind.Type) =
CharLiteral Char
| FloatingLiteral Rational
| IntegerLiteral Integer
| StringLiteral Text
| HashLiteral !(Abstract.SupportFor 'Extensions.MagicHash λ) (Value λ l d s)
| ExtendedLiteral !(Abstract.SupportFor 'Extensions.ExtendedLiterals λ) Integer (Name λ)
data CallSafety λ = SafeCall | UnsafeCall | InterruptibleCall !(Abstract.SupportFor 'Extensions.InterruptibleFFI λ)
data CallingConvention λ = CCall | CppCall | DotNetCall | JvmCall | StdCall
| CApiCall !(Abstract.SupportFor 'Extensions.CApiFFI λ)
deriving instance Typeable (Export λ l d s)
deriving instance (Data (Abstract.Members λ), Data (Abstract.ModuleName λ), Data (Abstract.QualifiedName λ),
Data λ, Typeable l, Typeable d, Typeable s) => Data (Export λ l d s)
deriving instance (Show (Abstract.Members λ),
Show (Abstract.ModuleName λ), Show (Abstract.QualifiedName λ)) => Show (Export λ l d s)
deriving instance (Eq (Abstract.Members λ),
Eq (Abstract.ModuleName λ), Eq (Abstract.QualifiedName λ)) => Eq (Export λ l d s)
deriving instance Typeable (Import λ l d s)
deriving instance (Data (s (Abstract.ImportSpecification l l d d)), Data (Abstract.ModuleName λ),
Data λ, Typeable l, Typeable d, Typeable s) => Data (Import λ l d s)
deriving instance (Show (s (Abstract.ImportSpecification l l d d)), Show (Abstract.ModuleName λ)) =>
Show (Import λ l d s)
deriving instance (Eq (s (Abstract.ImportSpecification l l d d)), Eq (Abstract.ModuleName λ)) =>
Eq (Import λ l d s)
deriving instance Typeable (ImportItem λ l d s)
deriving instance (Data (Abstract.Members λ), Data (Abstract.Name λ),
Data λ, Typeable l, Typeable d, Typeable s) => Data (ImportItem λ l d s)
deriving instance (Show (Abstract.Members λ), Show (Abstract.Name λ)) => Show (ImportItem λ l d s)
deriving instance (Eq (Abstract.Members λ), Eq (Abstract.Name λ)) => Eq (ImportItem λ l d s)
deriving instance (Data λ, Data (Abstract.SupportFor 'Extensions.ExplicitNamespaces λ)) => Data (Members λ)
deriving instance (Show (Abstract.SupportFor 'Extensions.ExplicitNamespaces λ)) => Show (Members λ)
deriving instance (Eq (Abstract.SupportFor 'Extensions.ExplicitNamespaces λ)) => Eq (Members λ)
deriving instance Typeable (Declaration λ l d s)
deriving instance (Data (Abstract.SupportFor 'Extensions.ExplicitNamespaces λ),
Data (Abstract.SupportFor 'Extensions.StandaloneDeriving λ),
Data (Abstract.SupportFor 'Extensions.DerivingStrategies λ),
Data (Abstract.SupportFor 'Extensions.DefaultSignatures λ),
Data (Abstract.SupportFor 'Extensions.GADTs λ),
Data (Abstract.SupportFor 'Extensions.NamedDefaults λ),
Data (Abstract.SupportFor 'Extensions.TypeData λ),
Data (Abstract.SupportFor 'Extensions.FunctionalDependencies λ),
Data (Abstract.SupportFor 'Extensions.ImplicitParameters λ),
Data (Abstract.SupportFor 'Extensions.InterruptibleFFI λ),
Data (Abstract.SupportFor 'Extensions.CApiFFI λ),
Data (Abstract.SupportFor 'Extensions.PatternSynonyms λ),
Data (s (Abstract.Context l l d d)), Data (s (Abstract.Kind l l d d)),
Data (s (Abstract.FunctionalDependency l l d d)),
Data (s (Abstract.DataConstructor l l d d)), Data (s (Abstract.GADTConstructor l l d d)),
Data (s (Abstract.DerivingStrategy l l d d)),
Data (s (Abstract.Declaration l l d d)), Data (s (Abstract.DerivingClause l l d d)),
Data (s (Abstract.EquationLHS l l d d)), Data (s (Abstract.EquationRHS l l d d)),
Data (s (Abstract.Expression l l d d)),
Data (s (Abstract.Type l l d d)), Data (s (Abstract.TypeLHS l l d d)),
Data (s (Abstract.Kind l l d d)), Data (s (Abstract.ClassInstanceLHS l l d d)),
Data (s (Abstract.PatternLHS l l d d)), Data (s (Abstract.PatternEquationClause l l d d)),
Data (s (Abstract.Pattern l l d d)),
Data (Abstract.TypeVarBinding λ l d s),
Data (Abstract.Name λ), Data (Abstract.QualifiedName λ), Data (Abstract.TypeRole λ),
Data λ, Typeable l, Typeable d, Typeable s) => Data (Declaration λ l d s)
deriving instance (Show (Abstract.SupportFor 'Extensions.ExplicitNamespaces λ),
Show (Abstract.SupportFor 'Extensions.StandaloneDeriving λ),
Show (Abstract.SupportFor 'Extensions.DerivingStrategies λ),
Show (Abstract.SupportFor 'Extensions.DefaultSignatures λ),
Show (Abstract.SupportFor 'Extensions.GADTs λ),
Show (Abstract.SupportFor 'Extensions.NamedDefaults λ),
Show (Abstract.SupportFor 'Extensions.TypeData λ),
Show (Abstract.SupportFor 'Extensions.FunctionalDependencies λ),
Show (Abstract.SupportFor 'Extensions.ImplicitParameters λ),
Show (Abstract.SupportFor 'Extensions.InterruptibleFFI λ),
Show (Abstract.SupportFor 'Extensions.CApiFFI λ),
Show (Abstract.SupportFor 'Extensions.PatternSynonyms λ),
Show (s (Abstract.Context l l d d)), Show (s (Abstract.Kind l l d d)),
Show (s (Abstract.FunctionalDependency l l d d)),
Show (s (Abstract.DataConstructor l l d d)), Show (s (Abstract.GADTConstructor l l d d)),
Show (s (Abstract.DerivingStrategy l l d d)),
Show (s (Abstract.Declaration l l d d)), Show (s (Abstract.DerivingClause l l d d)),
Show (s (Abstract.EquationLHS l l d d)), Show (s (Abstract.EquationRHS l l d d)),
Show (s (Abstract.Expression l l d d)),
Show (s (Abstract.Type l l d d)), Show (s (Abstract.TypeLHS l l d d)),
Show (s (Abstract.Kind l l d d)), Show (s (Abstract.ClassInstanceLHS l l d d)),
Show (s (Abstract.PatternLHS l l d d)), Show (s (Abstract.PatternEquationClause l l d d)),
Show (s (Abstract.Pattern l l d d)),
Show (Abstract.TypeVarBinding λ l d s),
Show (Abstract.Name λ), Show (Abstract.QualifiedName λ),
Show (Abstract.TypeRole λ)) => Show (Declaration λ l d s)
deriving instance (Eq (Abstract.SupportFor 'Extensions.ExplicitNamespaces λ),
Eq (Abstract.SupportFor 'Extensions.StandaloneDeriving λ),
Eq (Abstract.SupportFor 'Extensions.DerivingStrategies λ),
Eq (Abstract.SupportFor 'Extensions.DefaultSignatures λ),
Eq (Abstract.SupportFor 'Extensions.GADTs λ),
Eq (Abstract.SupportFor 'Extensions.NamedDefaults λ),
Eq (Abstract.SupportFor 'Extensions.TypeData λ),
Eq (Abstract.SupportFor 'Extensions.FunctionalDependencies λ),
Eq (Abstract.SupportFor 'Extensions.ImplicitParameters λ),
Eq (Abstract.SupportFor 'Extensions.InterruptibleFFI λ),
Eq (Abstract.SupportFor 'Extensions.CApiFFI λ),
Eq (Abstract.SupportFor 'Extensions.PatternSynonyms λ),
Eq (s (Abstract.Context l l d d)), Eq (s (Abstract.Kind l l d d)),
Eq (s (Abstract.DataConstructor l l d d)), Eq (s (Abstract.GADTConstructor l l d d)),
Eq (s (Abstract.DerivingStrategy l l d d)),
Eq (s (Abstract.FunctionalDependency l l d d)),
Eq (s (Abstract.Declaration l l d d)), Eq (s (Abstract.DerivingClause l l d d)),
Eq (s (Abstract.EquationLHS l l d d)), Eq (s (Abstract.EquationRHS l l d d)),
Eq (s (Abstract.Expression l l d d)),
Eq (s (Abstract.Type l l d d)), Eq (s (Abstract.TypeLHS l l d d)), Eq (s (Abstract.Kind l l d d)),
Eq (s (Abstract.ClassInstanceLHS l l d d)),
Eq (s (Abstract.PatternLHS l l d d)), Eq (s (Abstract.PatternEquationClause l l d d)),
Eq (s (Abstract.Pattern l l d d)),
Eq (Abstract.TypeVarBinding λ l d s),
Eq (Abstract.Name λ), Eq (Abstract.QualifiedName λ),
Eq (Abstract.TypeRole λ)) => Eq (Declaration λ l d s)
deriving instance Typeable (PatternEquationClause λ l d s)
deriving instance (Typeable λ, Typeable l, Typeable d, Typeable s,
Data (Abstract.SupportFor 'Extensions.PatternSynonyms λ),
Data (s (Abstract.PatternEquationLHS l l d d)), Data (s (Abstract.EquationRHS l l d d)),
Data (s (Abstract.Declaration l l d d))) => Data (PatternEquationClause λ l d s)
deriving instance (Eq (Abstract.SupportFor 'Extensions.PatternSynonyms λ),
Eq (s (Abstract.PatternEquationLHS l l d d)), Eq (s (Abstract.EquationRHS l l d d)),
Eq (s (Abstract.Declaration l l d d))) => Eq (PatternEquationClause λ l d s)
deriving instance (Show (Abstract.SupportFor 'Extensions.PatternSynonyms λ),
Show (s (Abstract.PatternEquationLHS l l d d)), Show (s (Abstract.EquationRHS l l d d)),
Show (s (Abstract.Declaration l l d d))) => Show (PatternEquationClause λ l d s)
deriving instance Typeable (PatternEquationLHS λ l d s)
deriving instance (Typeable λ, Typeable l, Typeable d, Typeable s,
Data (Abstract.Name λ), Data (s (Abstract.Pattern l l d d))) => Data (PatternEquationLHS λ l d s)
deriving instance (Eq (Abstract.Name λ), Eq (s (Abstract.Pattern l l d d))) => Eq (PatternEquationLHS λ l d s)
deriving instance (Show (Abstract.Name λ), Show (s (Abstract.Pattern l l d d))) => Show (PatternEquationLHS λ l d s)
deriving instance Typeable (FunctionalDependency λ l d s)
deriving instance (Data (Abstract.Name λ),
Data λ, Typeable l, Typeable d, Typeable s) => Data (FunctionalDependency λ l d s)
deriving instance (Show (Abstract.Name λ)) => Show (FunctionalDependency λ l d s)
deriving instance (Eq (Abstract.Name λ)) => Eq (FunctionalDependency λ l d s)
deriving instance Typeable (DataConstructor λ l d s)
deriving instance (Data (s (Abstract.Context l l d d)), Data (s (Abstract.DataConstructor l l d d)),
Data (s (Abstract.FieldDeclaration l l d d)), Data (s (Abstract.Type l l d d)),
Data (s (Abstract.Kind l l d d)), Data (Abstract.Name λ),
Data λ, Typeable l, Typeable d, Typeable s) => Data (DataConstructor λ l d s)
deriving instance (Show (s (Abstract.Context l l d d)), Show (s (Abstract.DataConstructor l l d d)),
Show (s (Abstract.FieldDeclaration l l d d)), Show (s (Abstract.Type l l d d)),
Show (s (Abstract.Kind l l d d)), Show (Abstract.Name λ)) => Show (DataConstructor λ l d s)
deriving instance (Eq (s (Abstract.Context l l d d)), Eq (s (Abstract.DataConstructor l l d d)),
Eq (s (Abstract.FieldDeclaration l l d d)), Eq (s (Abstract.Type l l d d)),
Eq (s (Abstract.Kind l l d d)), Eq (Abstract.Name λ)) => Eq (DataConstructor λ l d s)
deriving instance Typeable (GADTConstructor λ l d s)
deriving instance (Data (s (Abstract.Context l l d d)), Data (s (Abstract.Type l l d d)),
Data (s (Abstract.Kind l l d d)), Data (Abstract.Name λ),
Data λ, Typeable l, Typeable d, Typeable s) => Data (GADTConstructor λ l d s)
deriving instance (Show (s (Abstract.Context l l d d)), Show (s (Abstract.Type l l d d)),
Show (s (Abstract.Kind l l d d)),
Show (Abstract.Name λ), Show (Abstract.Name λ)) => Show (GADTConstructor λ l d s)
deriving instance (Eq (s (Abstract.Context l l d d)), Eq (s (Abstract.Type l l d d)),
Eq (s (Abstract.Kind l l d d)),
Eq (Abstract.Name λ), Eq (Abstract.Name λ)) => Eq (GADTConstructor λ l d s)
deriving instance Typeable (DerivingClause λ l d s)
deriving instance (Data (Abstract.SupportFor 'Extensions.DerivingStrategies λ),
Data (Abstract.SupportFor 'Extensions.DerivingVia λ),
Data (Abstract.QualifiedName λ), Data (s (Abstract.Type l l d d)),
Data (s (Abstract.DerivingStrategy l l d d)),
Data λ, Typeable l, Typeable d, Typeable s) => Data (DerivingClause λ l d s)
deriving instance (Show (Abstract.SupportFor 'Extensions.DerivingStrategies λ),
Show (Abstract.SupportFor 'Extensions.DerivingVia λ),
Show (Abstract.QualifiedName λ), Show (s (Abstract.Type l l d d)),
Show (s (Abstract.DerivingStrategy l l d d))) => Show (DerivingClause λ l d s)
deriving instance (Eq (Abstract.SupportFor 'Extensions.DerivingStrategies λ),
Eq (Abstract.SupportFor 'Extensions.DerivingVia λ),
Eq (Abstract.QualifiedName λ), Eq (s (Abstract.Type l l d d)),
Eq (s (Abstract.DerivingStrategy l l d d))) => Eq (DerivingClause λ l d s)
deriving instance Typeable (DerivingStrategy λ l d s)
deriving instance (Data (Abstract.SupportFor 'Extensions.DerivingVia λ),
Data λ, Typeable l, Typeable d, Typeable s, Data (s (Abstract.Type l l d d))) =>
Data (DerivingStrategy λ l d s)
deriving instance (Show (Abstract.SupportFor 'Extensions.DerivingVia λ),
Show (s (Abstract.Type l l d d))) => Show (DerivingStrategy λ l d s)
deriving instance (Eq (Abstract.SupportFor 'Extensions.DerivingVia λ),
Eq (s (Abstract.Type l l d d))) => Eq (DerivingStrategy λ l d s)
deriving instance Typeable (Type λ l d s)
deriving instance (Data (Abstract.SupportFor 'Extensions.UnboxedSums λ),
Data (Abstract.SupportFor 'Extensions.UnboxedTuples λ),
Data (Abstract.SupportFor 'Extensions.StrictData λ),
Data (s (Abstract.Constructor l l d d)), Data (s (Abstract.Context l l d d)),
Data (s (Abstract.Kind l l d d)), Data (s (Abstract.Type l l d d)),
Data (s (Abstract.FieldDeclaration l l d d)),
Data (Abstract.Name λ), Data (Abstract.QualifiedName λ),
Data λ, Typeable l, Typeable d, Typeable s) => Data (Type λ l d s)
deriving instance (Show (Abstract.SupportFor 'Extensions.UnboxedSums λ),
Show (Abstract.SupportFor 'Extensions.UnboxedTuples λ),
Show (Abstract.SupportFor 'Extensions.StrictData λ),
Show (s (Abstract.Constructor l l d d)), Show (s (Abstract.Context l l d d)),
Show (s (Abstract.Kind l l d d)), Show (s (Abstract.Type l l d d)),
Show (s (Abstract.FieldDeclaration l l d d)),
Show (Abstract.Name λ), Show (Abstract.QualifiedName λ)) => Show (Type λ l d s)
deriving instance (Eq (Abstract.SupportFor 'Extensions.UnboxedSums λ),
Eq (Abstract.SupportFor 'Extensions.UnboxedTuples λ),
Eq (Abstract.SupportFor 'Extensions.StrictData λ),
Eq (s (Abstract.Constructor l l d d)), Eq (s (Abstract.Context l l d d)),
Eq (s (Abstract.Kind l l d d)), Eq (s (Abstract.Type l l d d)),
Eq (s (Abstract.FieldDeclaration l l d d)),
Eq (Abstract.Name λ), Eq (Abstract.QualifiedName λ)) => Eq (Type λ l d s)
deriving instance Typeable (TypeVarBinding λ l d s)
deriving instance (Data (s (Abstract.Kind l l d d)), Data (Abstract.Name λ),
Data λ, Typeable l, Typeable d, Typeable s) => Data (TypeVarBinding λ l d s)
deriving instance (Show (s (Abstract.Kind l l d d)), Show (Abstract.Name λ)) => Show (TypeVarBinding λ l d s)
deriving instance (Eq (s (Abstract.Kind l l d d)), Eq (Abstract.Name λ)) => Eq (TypeVarBinding λ l d s)
deriving instance Typeable (TypeLHS λ l d s)
deriving instance (Data (Abstract.SupportFor 'Extensions.TypeAbstractions λ),
Data (s (Abstract.Type l l d d)), Data (s (Abstract.TypeLHS l l d d)),
Data (s (Abstract.Kind l l d d)),
Data (Abstract.QualifiedName λ), Data (Abstract.Name λ),
Data λ, Typeable l, Typeable d, Typeable s) => Data (TypeLHS λ l d s)
deriving instance (Show (Abstract.SupportFor 'Extensions.TypeAbstractions λ),
Show (s (Abstract.Type l l d d)), Show (s (Abstract.TypeLHS l l d d)),
Show (s (Abstract.Kind l l d d)),
Show (Abstract.QualifiedName λ), Show (Abstract.Name λ)) => Show (TypeLHS λ l d s)
deriving instance (Eq (Abstract.SupportFor 'Extensions.TypeAbstractions λ),
Eq (s (Abstract.Type l l d d)), Eq (s (Abstract.TypeLHS l l d d)), Eq (s (Abstract.Kind l l d d)),
Eq (Abstract.QualifiedName λ), Eq (Abstract.Name λ)) => Eq (TypeLHS λ l d s)
deriving instance Typeable (ClassInstanceLHS λ l d s)
deriving instance (Data (s (Abstract.ClassInstanceLHS l l d d)), Data (s (Abstract.Type l l d d)),
Data (s (Abstract.Kind l l d d)), Data (Abstract.QualifiedName λ),
Data λ, Typeable l, Typeable d, Typeable s) => Data (ClassInstanceLHS λ l d s)
deriving instance (Show (s (Abstract.ClassInstanceLHS l l d d)), Show (s (Abstract.Type l l d d)),
Show (s (Abstract.Kind l l d d)), Show (Abstract.QualifiedName λ)) => Show (ClassInstanceLHS λ l d s)
deriving instance (Eq (s (Abstract.ClassInstanceLHS l l d d)), Eq (s (Abstract.Type l l d d)),
Eq (s (Abstract.Kind l l d d)), Eq (Abstract.QualifiedName λ)) => Eq (ClassInstanceLHS λ l d s)
deriving instance Typeable (Context λ l d s)
deriving instance (Data (Abstract.SupportFor 'Extensions.ImplicitParameters λ),
Data (s (Abstract.Context l l d d)), Data (s (Abstract.Type l l d d)),
Data (Abstract.Name λ), Data (Abstract.QualifiedName λ),
Data λ, Typeable l, Typeable d, Typeable s) => Data (Context λ l d s)
deriving instance (Show (Abstract.SupportFor 'Extensions.ImplicitParameters λ),
Show (s (Abstract.Context l l d d)), Show (s (Abstract.Type l l d d)),
Show (Abstract.QualifiedName λ), Show (Abstract.Name λ)) => Show (Context λ l d s)
deriving instance (Eq (Abstract.SupportFor 'Extensions.ImplicitParameters λ),
Eq (s (Abstract.Context l l d d)), Eq (s (Abstract.Type l l d d)),
Eq (Abstract.QualifiedName λ), Eq (Abstract.Name λ)) => Eq (Context λ l d s)
deriving instance Typeable (Expression λ l d s)
deriving instance (Typeable (Abstract.Pattern l), Typeable (Abstract.EquationRHS l),
Data (Abstract.SupportFor 'Extensions.ExplicitNamespaces λ),
Data (Abstract.SupportFor 'Extensions.ImplicitParameters λ),
Data (Abstract.SupportFor 'Extensions.QualifiedDo λ),
Data (Abstract.SupportFor 'Extensions.RecursiveDo λ),
Data (Abstract.SupportFor 'Extensions.LambdaCase λ),
Data (Abstract.SupportFor 'Extensions.RecordWildCards λ),
Data (Abstract.SupportFor 'Extensions.UnboxedSums λ),
Data (Abstract.SupportFor 'Extensions.UnboxedTuples λ),
Data (s (Abstract.CaseAlternative l l d d)), Data (s (Abstract.Constructor l l d d)),
Data (s (Abstract.Expression l l d d)), Data (s (Abstract.GuardedExpression l l d d)),
Data (s (Abstract.Declaration l l d d)), Data (s (Abstract.FieldBinding l l d d)),
Data (s (Abstract.Pattern l l d d)), Data (s (Abstract.Statement l l d d)),
Data (s (Abstract.LambdaCasesAlternative l l d d)),
Data (s (Abstract.Type l l d d)), Data (s (Abstract.Value l l d d)),
Data (Abstract.QualifiedName λ), Data (Abstract.ModuleName λ), Data (Abstract.Name λ),
Data λ, Typeable l, Typeable d, Typeable s) => Data (Expression λ l d s)
deriving instance (Show (Abstract.SupportFor 'Extensions.ExplicitNamespaces λ),
Show (Abstract.SupportFor 'Extensions.ImplicitParameters λ),
Show (Abstract.SupportFor 'Extensions.QualifiedDo λ),
Show (Abstract.SupportFor 'Extensions.RecursiveDo λ),
Show (Abstract.SupportFor 'Extensions.LambdaCase λ),
Show (Abstract.SupportFor 'Extensions.RecordWildCards λ),
Show (Abstract.SupportFor 'Extensions.UnboxedSums λ),
Show (Abstract.SupportFor 'Extensions.UnboxedTuples λ),
Show (s (Abstract.CaseAlternative l l d d)), Show (s (Abstract.Constructor l l d d)),
Show (s (Abstract.Expression l l d d)), Show (s (Abstract.GuardedExpression l l d d)),
Show (s (Abstract.Declaration l l d d)), Show (s (Abstract.FieldBinding l l d d)),
Show (s (Abstract.Pattern l l d d)), Show (s (Abstract.Statement l l d d)),
Show (s (Abstract.LambdaCasesAlternative l l d d)),
Show (s (Abstract.EquationRHS l l d d)),
Show (s (Abstract.Type l l d d)), Show (s (Abstract.Value l l d d)),
Show (Abstract.QualifiedName λ), Show (Abstract.ModuleName λ),
Show (Abstract.Name λ)) => Show (Expression λ l d s)
deriving instance (Eq (Abstract.SupportFor 'Extensions.ExplicitNamespaces λ),
Eq (Abstract.SupportFor 'Extensions.ImplicitParameters λ),
Eq (Abstract.SupportFor 'Extensions.QualifiedDo λ),
Eq (Abstract.SupportFor 'Extensions.RecursiveDo λ),
Eq (Abstract.SupportFor 'Extensions.LambdaCase λ),
Eq (Abstract.SupportFor 'Extensions.RecordWildCards λ),
Eq (Abstract.SupportFor 'Extensions.UnboxedSums λ),
Eq (Abstract.SupportFor 'Extensions.UnboxedTuples λ),
Eq (s (Abstract.CaseAlternative l l d d)), Eq (s (Abstract.Constructor l l d d)),
Eq (s (Abstract.Expression l l d d)), Eq (s (Abstract.GuardedExpression l l d d)),
Eq (s (Abstract.Declaration l l d d)), Eq (s (Abstract.FieldBinding l l d d)),
Eq (s (Abstract.Pattern l l d d)), Eq (s (Abstract.Statement l l d d)),
Eq (s (Abstract.LambdaCasesAlternative l l d d)),
Eq (s (Abstract.EquationRHS l l d d)),
Eq (s (Abstract.Type l l d d)), Eq (s (Abstract.Value l l d d)),
Eq (Abstract.QualifiedName λ), Eq (Abstract.ModuleName λ),
Eq (Abstract.Name λ)) => Eq (Expression λ l d s)
deriving instance Typeable (FieldBinding λ l d s)
deriving instance (Data (s (Abstract.Expression l l d d)), Data (Abstract.QualifiedName λ),
Data λ, Typeable l, Typeable d, Typeable s) => Data (FieldBinding λ l d s)
deriving instance (Show (s (Abstract.Expression l l d d)), Show (Abstract.QualifiedName λ)) =>
Show (FieldBinding λ l d s)
deriving instance (Eq (s (Abstract.Expression l l d d)), Eq (Abstract.QualifiedName λ)) =>
Eq (FieldBinding λ l d s)
deriving instance Typeable (LambdaCasesAlternative λ l d s)
deriving instance (Data (Abstract.SupportFor 'Extensions.LambdaCase λ),
Data (s (Abstract.Pattern l l d d)), Data (s (Abstract.EquationRHS l l d d)),
Data λ, Typeable l, Typeable d, Typeable s) => Data (LambdaCasesAlternative λ l d s)
deriving instance (Show (Abstract.SupportFor 'Extensions.LambdaCase λ),
Show (s (Abstract.Pattern l l d d)), Show (s (Abstract.EquationRHS l l d d))) =>
Show (LambdaCasesAlternative λ l d s)
deriving instance (Eq (Abstract.SupportFor 'Extensions.LambdaCase λ),
Eq (s (Abstract.Pattern l l d d)), Eq (s (Abstract.EquationRHS l l d d))) =>
Eq (LambdaCasesAlternative λ l d s)
deriving instance Typeable (Pattern λ l d s)
deriving instance (Data (Abstract.SupportFor 'Extensions.ExplicitNamespaces λ),
Data (Abstract.SupportFor 'Extensions.RecordWildCards λ),
Data (Abstract.SupportFor 'Extensions.UnboxedSums λ),
Data (Abstract.SupportFor 'Extensions.UnboxedTuples λ),
Data (Abstract.SupportFor 'Extensions.Strict λ),
Data (Abstract.SupportFor 'Extensions.BangPatterns λ),
Data (Abstract.SupportFor 'Extensions.ViewPatterns λ),
Data (Abstract.SupportFor 'Extensions.NPlusKPatterns λ),
Data (Abstract.SupportFor 'Extensions.TypeAbstractions λ),
Data (s (Abstract.Constructor l l d d)), Data (s (Abstract.Expression l l d d)),
Data (s (Abstract.FieldPattern l l d d)), Data (s (Abstract.Pattern l l d d)),
Data (s (Abstract.Value l l d d)), Data (s (Abstract.Type l l d d)),
Data (Abstract.Name λ), Data (Abstract.QualifiedName λ),
Data λ, Typeable l, Typeable d, Typeable s) => Data (Pattern λ l d s)
deriving instance (Show (Abstract.SupportFor 'Extensions.ExplicitNamespaces λ),
Show (Abstract.SupportFor 'Extensions.RecordWildCards λ),
Show (Abstract.SupportFor 'Extensions.UnboxedSums λ),
Show (Abstract.SupportFor 'Extensions.UnboxedTuples λ),
Show (Abstract.SupportFor 'Extensions.Strict λ),
Show (Abstract.SupportFor 'Extensions.BangPatterns λ),
Show (Abstract.SupportFor 'Extensions.ViewPatterns λ),
Show (Abstract.SupportFor 'Extensions.NPlusKPatterns λ),
Show (Abstract.SupportFor 'Extensions.TypeAbstractions λ),
Show (s (Abstract.Constructor l l d d)), Show (s (Abstract.Expression l l d d)),
Show (s (Abstract.FieldPattern l l d d)), Show (s (Abstract.Pattern l l d d)),
Show (s (Abstract.Value l l d d)), Show (s (Abstract.Type l l d d)),
Show (Abstract.QualifiedName λ), Show (Abstract.Name λ)) => Show (Pattern λ l d s)
deriving instance (Eq (Abstract.SupportFor 'Extensions.ExplicitNamespaces λ),
Eq (Abstract.SupportFor 'Extensions.RecordWildCards λ),
Eq (Abstract.SupportFor 'Extensions.UnboxedSums λ),
Eq (Abstract.SupportFor 'Extensions.UnboxedTuples λ),
Eq (Abstract.SupportFor 'Extensions.Strict λ),
Eq (Abstract.SupportFor 'Extensions.BangPatterns λ),
Eq (Abstract.SupportFor 'Extensions.ViewPatterns λ),
Eq (Abstract.SupportFor 'Extensions.NPlusKPatterns λ),
Eq (Abstract.SupportFor 'Extensions.TypeAbstractions λ),
Eq (s (Abstract.Constructor l l d d)), Eq (s (Abstract.Expression l l d d)),
Eq (s (Abstract.FieldPattern l l d d)), Eq (s (Abstract.Pattern l l d d)),
Eq (s (Abstract.Value l l d d)), Eq (s (Abstract.Type l l d d)),
Eq (Abstract.QualifiedName λ), Eq (Abstract.Name λ)) => Eq (Pattern λ l d s)
deriving instance Typeable (FieldPattern λ l d s)
deriving instance (Data (s (Abstract.Pattern l l d d)), Data (Abstract.QualifiedName λ),
Data λ, Typeable l, Typeable d, Typeable s) => Data (FieldPattern λ l d s)
deriving instance (Show (s (Abstract.Pattern l l d d)), Show (Abstract.QualifiedName λ)) => Show (FieldPattern λ l d s)
deriving instance (Eq (s (Abstract.Pattern l l d d)), Eq (Abstract.QualifiedName λ)) => Eq (FieldPattern λ l d s)
deriving instance Typeable (PatternLHS λ l d s)
deriving instance (Data (Abstract.Name λ), Data λ, Typeable l, Typeable d, Typeable s) => Data (PatternLHS λ l d s)
deriving instance (Show (Abstract.Name λ)) => Show (PatternLHS λ l d s)
deriving instance (Eq (Abstract.Name λ)) => Eq (PatternLHS λ l d s)
deriving instance Typeable (Statement λ l d s)
deriving instance (Data (s (Abstract.Declaration l l d d)), Data (s (Abstract.Expression l l d d)),
Data (s (Abstract.Pattern l l d d)), Data (s (Abstract.Statement l l d d)),
Data λ, Typeable l, Typeable d, Typeable s) => Data (Statement λ l d s)
deriving instance (Show (s (Abstract.Declaration l l d d)), Show (s (Abstract.Expression l l d d)),
Show (s (Abstract.Pattern l l d d)), Show (s (Abstract.Statement l l d d)))
=> Show (Statement λ l d s)
deriving instance (Eq (s (Abstract.Declaration l l d d)), Eq (s (Abstract.Expression l l d d)),
Eq (s (Abstract.Pattern l l d d)), Eq (s (Abstract.Statement l l d d))) => Eq (Statement λ l d s)
deriving instance Data (Abstract.QualifiedName λ) => Typeable (Constructor λ l d s)
deriving instance (Data (Abstract.SupportFor 'Extensions.UnboxedSums λ),
Data (Abstract.SupportFor 'Extensions.UnboxedTuples λ),
Data (Abstract.QualifiedName λ),
Data λ, Typeable l, Typeable d, Typeable s) => Data (Constructor λ l d s)
deriving instance (Show (Abstract.SupportFor 'Extensions.UnboxedSums λ),
Show (Abstract.SupportFor 'Extensions.UnboxedTuples λ),
Show (Abstract.QualifiedName λ)) => Show (Constructor λ l d s)
deriving instance (Eq (Abstract.SupportFor 'Extensions.UnboxedSums λ),
Eq (Abstract.SupportFor 'Extensions.UnboxedTuples λ),
Eq (Abstract.QualifiedName λ)) => Eq (Constructor λ l d s)
deriving instance Typeable (Value λ l d s)
deriving instance (Data (Abstract.SupportFor 'Extensions.ExtendedLiterals λ),
Data (Abstract.SupportFor 'Extensions.MagicHash λ),
Data λ, Typeable l, Typeable d, Typeable s) => Data (Value λ l d s)
deriving instance (Show (Abstract.SupportFor 'Extensions.ExtendedLiterals λ),
Show (Abstract.SupportFor 'Extensions.MagicHash λ)) => Show (Value λ l d s)
deriving instance (Eq (Abstract.SupportFor 'Extensions.ExtendedLiterals λ),
Eq (Abstract.SupportFor 'Extensions.MagicHash λ)) => Eq (Value λ l d s)
deriving instance Typeable (CallSafety λ)
deriving instance (Data (Abstract.SupportFor 'Extensions.InterruptibleFFI λ), Data λ) => Data (CallSafety λ)
deriving instance Show (Abstract.SupportFor 'Extensions.InterruptibleFFI λ) => Show (CallSafety λ)
deriving instance Eq (Abstract.SupportFor 'Extensions.InterruptibleFFI λ) => Eq (CallSafety λ)
deriving instance Typeable (CallingConvention λ)
deriving instance (Data (Abstract.SupportFor 'Extensions.CApiFFI λ), Data λ) => Data (CallingConvention λ)
deriving instance Show (Abstract.SupportFor 'Extensions.CApiFFI λ) => Show (CallingConvention λ)
deriving instance Eq (Abstract.SupportFor 'Extensions.CApiFFI λ) => Eq (CallingConvention λ)
$