1
1
mirror of https://github.com/github/semantic.git synced 2024-12-26 00:12:29 +03:00

Merge branch 'master' into grpc-trees

This commit is contained in:
Josh Vera 2018-06-25 17:41:51 -04:00 committed by GitHub
commit 5674357bae
75 changed files with 15890 additions and 504 deletions

View File

@ -243,7 +243,7 @@ nodeError expected Node{..} = Error nodeSpan expected (Just (Right nodeSymbol))
firstSet :: (Enum grammar, Ix grammar) => Assignment ast grammar a -> [grammar] firstSet :: (Enum grammar, Ix grammar) => Assignment ast grammar a -> [grammar]
firstSet = iterFreer (\ _ (Tracing _ assignment) -> case assignment of firstSet = iterFreer (\ _ (Tracing _ assignment) -> case assignment of
Choose table _ _ -> Table.tableAddresses table Choose table _ _ -> Table.tableAddresses table
Label child _ -> firstSet child Label child _ -> firstSet child
_ -> []) . ([] <$) _ -> []) . ([] <$)

View File

@ -142,7 +142,7 @@ instance (Show1 syntax, Show ann1, Show ann2) => Show (Diff syntax ann1 ann2) wh
instance Show1 syntax => Show3 (DiffF syntax) where instance Show1 syntax => Show3 (DiffF syntax) where
liftShowsPrec3 sp1 sl1 sp2 sl2 spRecur slRecur d diff = case diff of liftShowsPrec3 sp1 sl1 sp2 sl2 spRecur slRecur d diff = case diff of
Patch patch -> showsUnaryWith (liftShowsPrec2 (liftShowsPrec2 sp1 sl1 spRecur slRecur) (liftShowList2 sp1 sl1 spRecur slRecur) (liftShowsPrec2 sp2 sl2 spRecur slRecur) (liftShowList2 sp2 sl2 spRecur slRecur)) "Patch" d patch Patch patch -> showsUnaryWith (liftShowsPrec2 (liftShowsPrec2 sp1 sl1 spRecur slRecur) (liftShowList2 sp1 sl1 spRecur slRecur) (liftShowsPrec2 sp2 sl2 spRecur slRecur) (liftShowList2 sp2 sl2 spRecur slRecur)) "Patch" d patch
Merge term  -> showsUnaryWith (liftShowsPrec2 spBoth slBoth spRecur slRecur) "Merge" d term Merge term -> showsUnaryWith (liftShowsPrec2 spBoth slBoth spRecur slRecur) "Merge" d term
where spBoth = liftShowsPrec2 sp1 sl1 sp2 sl2 where spBoth = liftShowsPrec2 sp1 sl1 sp2 sl2
slBoth = liftShowList2 sp1 sl1 sp2 sl2 slBoth = liftShowList2 sp1 sl1 sp2 sl2

View File

@ -131,7 +131,7 @@ instance (Ord1 f, GOrd1 g) => GOrd1 (f :.: g) where
instance GShow1 U1 where instance GShow1 U1 where
gliftShowsPrec _ _ _ _ _ = id gliftShowsPrec _ _ _ _ _ = id
instance GShow1 Par1 where instance GShow1 Par1 where
gliftShowsPrec _ sp _ d (Par1 a) = sp d a gliftShowsPrec _ sp _ d (Par1 a) = sp d a
@ -149,7 +149,7 @@ instance (Constructor c, GShow1Body f) => GShow1 (M1 C c f) where
gliftShowsPrec opts sp sl d m = gliftShowsPrecBody opts (conFixity m) (conIsRecord m && optionsUseRecordSyntax opts) (conName m) sp sl d (unM1 m) gliftShowsPrec opts sp sl d m = gliftShowsPrecBody opts (conFixity m) (conIsRecord m && optionsUseRecordSyntax opts) (conName m) sp sl d (unM1 m)
instance GShow1Body U1 where instance GShow1Body U1 where
gliftShowsPrecBody _ _ _ conName _ _ _ _ = showString conName gliftShowsPrecBody _ _ _ conName _ _ _ _ = showString conName
instance (Selector s, GShow1 f) => GShow1Body (M1 S s f) where instance (Selector s, GShow1 f) => GShow1Body (M1 S s f) where
gliftShowsPrecBody opts _ conIsRecord conName sp sl d m = showParen (d > 10) $ showString conName . showChar ' ' . showBraces conIsRecord (foldr (.) id (gliftShowsPrecAll opts conIsRecord sp sl 11 m)) gliftShowsPrecBody opts _ conIsRecord conName sp sl d m = showParen (d > 10) $ showString conName . showChar ' ' . showBraces conIsRecord (foldr (.) id (gliftShowsPrecAll opts conIsRecord sp sl 11 m))
@ -163,7 +163,7 @@ instance (GShow1Body f, GShow1Body g) => GShow1Body (f :*: g) where
else foldr (.) id (intersperse (showString " ") (gliftShowsPrecAll opts conIsRecord sp sl 11 (a :*: b))) else foldr (.) id (intersperse (showString " ") (gliftShowsPrecAll opts conIsRecord sp sl 11 (a :*: b)))
Infix _ prec -> showParen (d > prec) $ gliftShowsPrec opts sp sl (succ prec) a . showChar ' ' . showString conName . showChar ' ' . gliftShowsPrec opts sp sl (succ prec) b Infix _ prec -> showParen (d > prec) $ gliftShowsPrec opts sp sl (succ prec) a . showChar ' ' . showString conName . showChar ' ' . gliftShowsPrec opts sp sl (succ prec) b
gliftShowsPrecAll opts conIsRecord sp sl d (a :*: b) = gliftShowsPrecAll opts conIsRecord sp sl d a <> gliftShowsPrecAll opts conIsRecord sp sl d b gliftShowsPrecAll opts conIsRecord sp sl d (a :*: b) = gliftShowsPrecAll opts conIsRecord sp sl d a <> gliftShowsPrecAll opts conIsRecord sp sl d b
instance GShow1 f => GShow1 (M1 S c f) where instance GShow1 f => GShow1 (M1 S c f) where
gliftShowsPrec opts sp sl d (M1 a) = gliftShowsPrec opts sp sl d a gliftShowsPrec opts sp sl d (M1 a) = gliftShowsPrec opts sp sl d a

View File

@ -8,7 +8,7 @@ import Data.Term
import Prologue import Prologue
-- | A single step in a diffing algorithm, parameterized by the types of terms, diffs, and the result of the applicable algorithm. -- | A single step in a diffing algorithm, parameterized by the types of terms, diffs, and the result of the applicable algorithm.
data AlgorithmF term1 term2 result partial where data AlgorithmF term1 term2 result partial where
-- | Diff two terms with the choice of algorithm left to the interpreters discretion. -- | Diff two terms with the choice of algorithm left to the interpreters discretion.
Diff :: term1 -> term2 -> AlgorithmF term1 term2 result result Diff :: term1 -> term2 -> AlgorithmF term1 term2 result result
-- | Diff two terms recursively in O(n) time, resulting in a single diff node. -- | Diff two terms recursively in O(n) time, resulting in a single diff node.

View File

@ -19,6 +19,7 @@ import qualified Data.Syntax as Syntax
import qualified Data.Syntax.Comment as Comment import qualified Data.Syntax.Comment as Comment
import qualified Data.Syntax.Declaration as Declaration import qualified Data.Syntax.Declaration as Declaration
import qualified Data.Syntax.Literal as Literal import qualified Data.Syntax.Literal as Literal
import qualified Data.Syntax.Statement as Statement
import qualified Data.Syntax.Type as Type import qualified Data.Syntax.Type as Type
import qualified Data.Term as Term import qualified Data.Term as Term
import qualified Language.Haskell.Syntax as Syntax import qualified Language.Haskell.Syntax as Syntax
@ -35,69 +36,134 @@ type Syntax = '[
, Literal.Integer , Literal.Integer
, Literal.TextElement , Literal.TextElement
, Literal.Tuple , Literal.Tuple
, Statement.If
, Statement.Match
, Statement.Pattern
, Syntax.AllConstructors , Syntax.AllConstructors
, Syntax.AnnotatedTypeVariable , Syntax.AnnotatedTypeVariable
, Syntax.App , Syntax.App
, Syntax.ArithmeticSequence , Syntax.ArithmeticSequence
, Syntax.AsPattern
, Syntax.BindPattern , Syntax.BindPattern
, Syntax.CaseGuardPattern
, Syntax.Class , Syntax.Class
, Syntax.ConstructorIdentifier
, Syntax.ConstructorOperator
, Syntax.ConstructorPattern , Syntax.ConstructorPattern
, Syntax.ConstructorSymbol , Syntax.ConstructorSymbol
, Syntax.Context , Syntax.Context
, Syntax.Context' , Syntax.Context'
, Syntax.CPPDirective
, Syntax.DefaultDeclaration , Syntax.DefaultDeclaration
, Syntax.DefaultSignature
, Syntax.Deriving , Syntax.Deriving
, Syntax.Do , Syntax.Do
, Syntax.Empty , Syntax.Empty
, Syntax.EntityIdentifier
, Syntax.Error , Syntax.Error
, Syntax.EqualityConstraint , Syntax.EqualityConstraint
, Syntax.Export , Syntax.Export
, Syntax.ExpressionTypeSignature
, Syntax.Field , Syntax.Field
, Syntax.FieldBind
, Syntax.FieldPattern
, Syntax.Fixity'
, Syntax.FunctionalDependency
, Syntax.FunctionConstructor , Syntax.FunctionConstructor
, Syntax.FunctionGuardPattern
, Syntax.FunctionType , Syntax.FunctionType
, Syntax.GADT , Syntax.GADT
, Syntax.GADTConstructor , Syntax.GADTConstructor
, Syntax.Generator , Syntax.Generator
, Syntax.Guard
, Syntax.HiddenImport , Syntax.HiddenImport
, Syntax.Identifier , Syntax.Identifier
, Syntax.InfixConstructorIdentifier
, Syntax.InfixOperatorApp
, Syntax.InfixVariableIdentifier
, Syntax.ImplicitParameterIdentifier
, Syntax.Import , Syntax.Import
, Syntax.ImportAlias , Syntax.ImportAlias
, Syntax.ImportDeclaration , Syntax.ImportDeclaration
, Syntax.InfixDataConstructor
, Syntax.InfixOperatorPattern , Syntax.InfixOperatorPattern
, Syntax.Instance
, Syntax.IrrefutablePattern
, Syntax.Kind , Syntax.Kind
, Syntax.KindFunctionType , Syntax.KindFunctionType
, Syntax.KindListType , Syntax.KindListType
, Syntax.KindParenthesizedConstructor
, Syntax.KindSignature , Syntax.KindSignature
, Syntax.KindTupleType
, Syntax.LabeledConstruction
, Syntax.LabeledPattern
, Syntax.LabeledUpdate
, Syntax.Lambda , Syntax.Lambda
, Syntax.LambdaCase
, Syntax.LeftOperatorSection
, Syntax.Let
, Syntax.ListComprehension , Syntax.ListComprehension
, Syntax.ListConstructor , Syntax.ListConstructor
, Syntax.ListPattern
, Syntax.Module , Syntax.Module
, Syntax.ModuleExport , Syntax.ModuleExport
, Syntax.ModuleIdentifier
, Syntax.NamedFieldPun
, Syntax.NegativeLiteral
, Syntax.NewType , Syntax.NewType
, Syntax.Operator , Syntax.PatternGuard
, Syntax.OperatorSection
, Syntax.Pragma , Syntax.Pragma
, Syntax.PrefixNegation , Syntax.PrefixNegation
, Syntax.QualifiedEntityIdentifier , Syntax.PrimitiveConstructorIdentifier
, Syntax.PrimitiveVariableIdentifier
, Syntax.PromotedTypeOperator
, Syntax.QualifiedConstructorIdentifier
, Syntax.QualifiedInfixVariableIdentifier
, Syntax.QualifiedModuleIdentifier
, Syntax.QualifiedImportDeclaration , Syntax.QualifiedImportDeclaration
, Syntax.QualifiedTypeClassIdentifier
, Syntax.QualifiedTypeConstructorIdentifier
, Syntax.QualifiedVariableIdentifier
, Syntax.QuasiQuotation
, Syntax.QuasiQuotationDeclaration
, Syntax.QuasiQuotationExpression
, Syntax.QuasiQuotationExpressionBody
, Syntax.QuasiQuotationPattern
, Syntax.QuasiQuotationQuoter
, Syntax.QuasiQuotationType
, Syntax.QuotedName , Syntax.QuotedName
, Syntax.RecordDataConstructor , Syntax.RecordDataConstructor
, Syntax.RecordWildCards
, Syntax.RightOperatorSection
, Syntax.ScopedTypeVariables , Syntax.ScopedTypeVariables
, Syntax.Splice
, Syntax.StandaloneDerivingInstance , Syntax.StandaloneDerivingInstance
, Syntax.Star , Syntax.Star
, Syntax.StrictPattern
, Syntax.StrictType , Syntax.StrictType
, Syntax.StrictTypeVariable , Syntax.StrictTypeVariable
, Syntax.Tuple , Syntax.Tuple
, Syntax.TupleConstructor , Syntax.TupleConstructor
, Syntax.TuplePattern , Syntax.TuplePattern
, Syntax.Type , Syntax.Type
, Syntax.TypeApp
, Syntax.TypeClass
, Syntax.TypeClassIdentifier
, Syntax.TypeClassInstance
, Syntax.TypeConstructorExport , Syntax.TypeConstructorExport
, Syntax.TypeConstructorIdentifier
, Syntax.TypeFamily
, Syntax.TypeInstance
, Syntax.TypeOperator
, Syntax.TypePattern , Syntax.TypePattern
, Syntax.TypeSignature , Syntax.TypeSignature
, Syntax.TypeSynonym , Syntax.TypeSynonym
, Syntax.TypeVariableIdentifier
, Syntax.UnitConstructor , Syntax.UnitConstructor
, Syntax.VariableIdentifier
, Syntax.VariableOperator
, Syntax.VariableSymbol , Syntax.VariableSymbol
, Syntax.ViewPattern
, Syntax.Wildcard
, Type.TypeParameters , Type.TypeParameters
, [] , []
] ]
@ -115,18 +181,22 @@ algebraicDatatypeDeclaration = makeTerm
<*> children (Declaration.Datatype <*> children (Declaration.Datatype
<$> (context' <|> emptyTerm) <$> (context' <|> emptyTerm)
<*> (makeTerm <$> location <*> (Syntax.Type <$> typeConstructor <*> typeParameters <*> (kindSignature <|> emptyTerm))) <*> (makeTerm <$> location <*> (Syntax.Type <$> typeConstructor <*> typeParameters <*> (kindSignature <|> emptyTerm)))
<*> ((symbol Constructors *> children (manyTerm constructor)) <*> (constructors <|> pure [])
<|> pure []) <*> (term derivingClause <|> emptyTerm))
<*> (derivingClause <|> emptyTerm)) where
constructors = symbol Constructors *> children (manyTerm constructor)
allConstructors :: Assignment allConstructors :: Assignment
allConstructors = makeTerm <$> token AllConstructors <*> pure Syntax.AllConstructors allConstructors = makeTerm <$> token AllConstructors <*> pure Syntax.AllConstructors
alternative :: Assignment
alternative = makeTerm <$> symbol Alternative <*> children (Statement.Pattern <$> expression <*> expressions)
annotatedTypeVariable :: Assignment annotatedTypeVariable :: Assignment
annotatedTypeVariable = makeTerm <$> symbol AnnotatedTypeVariable <*> children (Syntax.AnnotatedTypeVariable <$> typeVariableIdentifier <* token Annotation <*> (kind <|> type')) annotatedTypeVariable = makeTerm <$> symbol AnnotatedTypeVariable <*> children (Syntax.AnnotatedTypeVariable <$> typeVariableIdentifier <* token Annotation <*> expression)
app :: Assignment app :: Assignment
app = makeTerm <$> symbol FunctionApplication <*> children (Syntax.App <$> expression <*> expression) app = makeTerm <$> symbol FunctionApplication <*> children (Syntax.App <$> expression <*> (typeApp <|> emptyTerm) <*> expression)
arithmeticSequence :: Assignment arithmeticSequence :: Assignment
arithmeticSequence = symbol ArithmeticSequence *> children ( enumFrom arithmeticSequence = symbol ArithmeticSequence *> children ( enumFrom
@ -134,13 +204,22 @@ arithmeticSequence = symbol ArithmeticSequence *> children ( enumFrom
<|> enumFromTo <|> enumFromTo
<|> enumFromThenTo) <|> enumFromThenTo)
where where
enumFrom = makeTerm <$> symbol EnumFrom <*> children (Syntax.EnumFrom <$> expression) enumFrom = makeTerm <$> symbol EnumFrom <*> children (Syntax.ArithmeticSequence <$> expression <*> pure Nothing <*> pure Nothing)
enumFromThen = makeTerm <$> symbol EnumFromThen <*> children (Syntax.EnumFromThen <$> expression <*> expression) enumFromThen = makeTerm <$> symbol EnumFromThen <*> children (Syntax.ArithmeticSequence <$> expression <*> (fmap Just expression) <*> pure Nothing)
enumFromTo = makeTerm <$> symbol EnumFromTo <*> children (Syntax.EnumFromTo <$> expression <*> expression) enumFromTo = makeTerm <$> symbol EnumFromTo <*> children (Syntax.ArithmeticSequence <$> expression <*> (fmap Just expression) <*> pure Nothing)
enumFromThenTo = makeTerm <$> symbol EnumFromThenTo <*> children (Syntax.EnumFromThenTo <$> expression <*> expression <*> expression) enumFromThenTo = makeTerm <$> symbol EnumFromThenTo <*> children (Syntax.ArithmeticSequence <$> expression <*> (fmap Just expression) <*> (fmap Just expression))
asPattern :: Assignment
asPattern = makeTerm <$> symbol AsPattern <*> children (Syntax.AsPattern <$> expression <*> expression)
bindPattern :: Assignment bindPattern :: Assignment
bindPattern = makeTerm <$> symbol BindPattern <*> children (Syntax.BindPattern <$> expression <*> expression) bindPattern = makeTerm <$> symbol BindPattern <*> children (Syntax.BindPattern <$> (manyTermsTill expression (symbol AnonLAngleMinus)) <*> expression)
case' :: Assignment
case' = makeTerm <$> symbol CaseExpression <*> children (Statement.Match <$> expression <*> expressions)
caseGuardPattern :: Assignment
caseGuardPattern = makeTerm <$> symbol CaseGuardPattern <*> children (Syntax.CaseGuardPattern <$> manyTerm expression)
character :: Assignment character :: Assignment
character = makeTerm <$> symbol Char <*> (Literal.Character <$> source) character = makeTerm <$> symbol Char <*> (Literal.Character <$> source)
@ -151,9 +230,13 @@ class' = makeTerm <$> symbol Class <*> children (Syntax.Class <$> manyTerm expre
comment :: Assignment comment :: Assignment
comment = makeTerm <$> symbol Comment <*> (Comment.Comment <$> source) comment = makeTerm <$> symbol Comment <*> (Comment.Comment <$> source)
conditionalExpression :: Assignment
conditionalExpression = makeTerm <$> symbol ConditionalExpression <*> children (Statement.If <$> expression <*> expression <*> expression)
constructor :: Assignment constructor :: Assignment
constructor = (makeTerm <$> symbol DataConstructor <*> children (Declaration.Constructor <$> manyTerm (context' <|> scopedTypeVariables) <*> typeConstructor <*> typeParameters)) constructor = (makeTerm <$> symbol DataConstructor <*> children (Declaration.Constructor <$> manyTerm (context' <|> scopedTypeVariables) <*> typeConstructor <*> typeParameters))
<|> (makeTerm <$> symbol RecordDataConstructor <*> children (Syntax.RecordDataConstructor <$> constructorIdentifier <*> fields)) <|> term (makeTerm <$> symbol RecordDataConstructor <*> children (Syntax.RecordDataConstructor <$> manyTerm (context' <|> scopedTypeVariables) <*> constructorIdentifier <*> (term fields)))
<|> term (makeTerm <$> symbol InfixDataConstructor <*> children (Syntax.InfixDataConstructor <$> manyTerm (context' <|> scopedTypeVariables) <*> expression <*> expression <*> expression))
constructorIdentifier :: Assignment constructorIdentifier :: Assignment
constructorIdentifier = makeTerm <$> symbol ConstructorIdentifier <*> (Syntax.ConstructorIdentifier . Name.name <$> source) constructorIdentifier = makeTerm <$> symbol ConstructorIdentifier <*> (Syntax.ConstructorIdentifier . Name.name <$> source)
@ -173,11 +256,17 @@ context' = makeTerm <$> symbol Context <*> children (Syntax.Context' <$> express
contextPattern :: Assignment contextPattern :: Assignment
contextPattern = symbol ContextPattern *> children expressions contextPattern = symbol ContextPattern *> children expressions
cppDirective :: Assignment
cppDirective = makeTerm <$> symbol CppDirective <*> (Syntax.CPPDirective <$> source)
defaultDeclaration :: Assignment defaultDeclaration :: Assignment
defaultDeclaration = makeTerm <$> symbol DefaultDeclaration <*> children (Syntax.DefaultDeclaration <$> manyTerm expression) defaultDeclaration = makeTerm <$> symbol DefaultDeclaration <*> children (Syntax.DefaultDeclaration <$> manyTerm expression)
defaultSignature :: Assignment
defaultSignature = makeTerm <$> symbol DefaultSignature <*> children (Syntax.DefaultSignature <$> manyTermsTill expression (symbol Annotation) <* token Annotation <*> manyTerm (context' <|> scopedTypeVariables) <*> expressions)
derivingClause :: Assignment derivingClause :: Assignment
derivingClause = makeTerm <$> symbol Deriving <*> children (Syntax.Deriving <$> manyTerm typeConstructor) derivingClause = makeTerm <$> symbol Deriving <*> children (Syntax.Deriving <$> manyTerm expression)
do' :: Assignment do' :: Assignment
do' = makeTerm <$> symbol Do <*> children (Syntax.Do <$> manyTerm expression) do' = makeTerm <$> symbol Do <*> children (Syntax.Do <$> manyTerm expression)
@ -192,7 +281,7 @@ export :: Assignment
export = makeTerm <$> symbol Export <*> children (Syntax.Export <$> expressions) export = makeTerm <$> symbol Export <*> children (Syntax.Export <$> expressions)
expression' :: Assignment expression' :: Assignment
expression' = symbol Expression *> children expression expression' = symbol Expression *> children expressions
expressions :: Assignment expressions :: Assignment
expressions = makeTerm'' <$> location <*> manyTerm expression expressions = makeTerm'' <$> location <*> manyTerm expression
@ -204,66 +293,113 @@ expressionChoices :: [Assignment.Assignment [] Grammar Term]
expressionChoices = [ expressionChoices = [
algebraicDatatypeDeclaration algebraicDatatypeDeclaration
, allConstructors , allConstructors
, alternative
, annotatedTypeVariable , annotatedTypeVariable
, app , app
, arithmeticSequence , arithmeticSequence
, asPattern
, bindPattern , bindPattern
, case'
, caseGuardPattern
, character , character
, class'
, comment , comment
, conditionalExpression
, context' , context'
, contextPattern , contextPattern
, constructorIdentifier , constructorIdentifier
, constructorOperator , constructorOperator
, constructorPattern , constructorPattern
, constructorSymbol , constructorSymbol
, cppDirective
, defaultDeclaration , defaultDeclaration
, defaultSignature
, derivingClause , derivingClause
, do' , do'
, equalityConstraint , equalityConstraint
, expression' , expression'
, expressionTypeSignature
, fields
, fieldBind
, fieldPattern
, fixityDeclaration
, float , float
, functionalDependency
, functionConstructor , functionConstructor
, functionDeclaration , functionDeclaration
, functionGuardPattern
, functionType , functionType
, gadtConstructor , gadtConstructor
, gadtDeclaration , gadtDeclaration
, generator , generator
, guard'
, implicitParameterIdentifier
, importAlias , importAlias
, importDeclaration , importDeclaration
, infixConstructorIdentifier
, infixOperatorApp , infixOperatorApp
, infixOperatorPattern , infixOperatorPattern
, infixVariableIdentifier , infixVariableIdentifier
, instance'
, integer , integer
, irrefutablePattern
, kind , kind
, kindListType
, kindFunctionType
, kindParenthesizedConstructor
, kindSignature , kindSignature
, kindTupleType
, labeledConstruction
, labeledPattern
, labeledUpdate
, lambda , lambda
, lambdaCase
, letExpression
, letStatement
, listConstructor , listConstructor
, listComprehension , listComprehension
, listExpression , listExpression
, listPattern
, listType , listType
, moduleExport , moduleExport
, moduleIdentifier , moduleIdentifier
, namedFieldPun
, negativeLiteral
, newType , newType
, operator , operator
, operatorSection , operatorSection
, parenthesizedConstructorOperator
, parenthesizedExpression , parenthesizedExpression
, parenthesizedPattern , parenthesizedPattern
, parenthesizedTypePattern , parenthesizedTypePattern
, pattern' , pattern'
, patternGuard
, pragma , pragma
, prefixNegation , prefixNegation
, primitiveConstructorIdentifier , primitiveConstructorIdentifier
, primitiveVariableIdentifier , primitiveVariableIdentifier
, promotedTypeOperator
, qualifiedConstructorIdentifier , qualifiedConstructorIdentifier
, qualifiedImportDeclaration , qualifiedImportDeclaration
, qualifiedInfixVariableIdentifier , qualifiedInfixVariableIdentifier
, qualifiedModuleIdentifier , qualifiedModuleIdentifier
, qualifiedTypeClassIdentifier
, qualifiedTypeConstructorIdentifier , qualifiedTypeConstructorIdentifier
, qualifiedVariableIdentifier , qualifiedVariableIdentifier
, quasiQuotation
, quasiQuotationDeclaration
, quasiQuotationExpression
, quasiQuotationExpressionBody
, quasiQuotationPattern
, quasiQuotationQuoter
, quasiQuotationType
, quotedName , quotedName
, recordWildCards
, scopedTypeVariables , scopedTypeVariables
, splice
, standaloneDerivingInstance , standaloneDerivingInstance
, star , star
, strictPattern
, strictType , strictType
, string , string
, tuple , tuple
@ -271,7 +407,13 @@ expressionChoices = [
, tupleType , tupleType
, type' , type'
, type'' , type''
, typeApp
, typeClass
, typeClassIdentifier , typeClassIdentifier
, typeClassInstance
, typeConstructor
, typeFamily
, typeInstance
, typePattern , typePattern
, typeConstructorExport , typeConstructorExport
, typeConstructorIdentifier , typeConstructorIdentifier
@ -284,9 +426,14 @@ expressionChoices = [
, variableIdentifier , variableIdentifier
, variableOperator , variableOperator
, variableSymbol , variableSymbol
, viewPattern
, where' , where'
, wildcard
] ]
expressionTypeSignature :: Assignment
expressionTypeSignature = makeTerm <$> symbol ExpressionTypeSignature <*> children (Syntax.ExpressionTypeSignature <$> manyTermsTill expression (symbol Annotation) <* token Annotation <*> manyTerm (context' <|> scopedTypeVariables) <*> expressions)
fields :: Assignment fields :: Assignment
fields = makeTerm <$> symbol Fields <*> children (manyTerm field) fields = makeTerm <$> symbol Fields <*> children (manyTerm field)
@ -300,9 +447,21 @@ field = makeTerm
where where
fieldType = makeTerm <$> location <*> (Syntax.Type <$> term (type' <|> typeVariableIdentifier) <*> typeParameters <*> (kindSignature <|> emptyTerm)) fieldType = makeTerm <$> location <*> (Syntax.Type <$> term (type' <|> typeVariableIdentifier) <*> typeParameters <*> (kindSignature <|> emptyTerm))
fieldBind :: Assignment
fieldBind = makeTerm <$> symbol FieldBind <*> children (Syntax.FieldBind <$> expression <*> expression)
fieldPattern :: Assignment
fieldPattern = makeTerm <$> symbol FieldPattern <*> children (Syntax.FieldPattern <$> expression <*> expressions)
fixityDeclaration :: Assignment
fixityDeclaration = makeTerm <$> symbol FixityDeclaration <*> children (Syntax.Fixity' <$> (integer <|> emptyTerm) <*> manyTerm expression)
float :: Assignment float :: Assignment
float = makeTerm <$> symbol Float <*> (Literal.Float <$> source) float = makeTerm <$> symbol Float <*> (Literal.Float <$> source)
functionalDependency :: Assignment
functionalDependency = makeTerm <$> symbol FunctionalDependency <*> children (Syntax.FunctionalDependency <$> expressions)
functionBody :: Assignment functionBody :: Assignment
functionBody = makeTerm <$> symbol FunctionBody <*> children (manyTerm expression) functionBody = makeTerm <$> symbol FunctionBody <*> children (manyTerm expression)
@ -313,21 +472,24 @@ functionDeclaration :: Assignment
functionDeclaration = makeTerm functionDeclaration = makeTerm
<$> symbol FunctionDeclaration <$> symbol FunctionDeclaration
<*> children (Declaration.Function [] <*> children (Declaration.Function []
<$> variableIdentifier <$> term expression
<*> (manyTermsTill expression (symbol FunctionBody) <|> pure []) <*> (manyTermsTill expression (symbol FunctionBody) <|> pure [])
<*> functionBody) <*> functionBody)
functionGuardPattern :: Assignment
functionGuardPattern = makeTerm <$> symbol FunctionGuardPattern <*> children (Syntax.FunctionGuardPattern <$> manyTerm expression)
functionType :: Assignment functionType :: Assignment
functionType = makeTerm <$> symbol FunctionType <*> children (Syntax.FunctionType <$> type' <*> type') functionType = makeTerm <$> symbol FunctionType <*> children (Syntax.FunctionType <$> expression <*> expression)
gadtConstructor :: Assignment gadtConstructor :: Assignment
gadtConstructor = makeTerm gadtConstructor = makeTerm
<$> symbol GadtConstructor <$> symbol GadtConstructor
<*> children (Syntax.GADTConstructor <*> children (Syntax.GADTConstructor
<$> (context' <|> emptyTerm) <$> (context' <|> emptyTerm)
<*> typeConstructor <*> expression
<* token Annotation <* token Annotation
<*> term type') <*> expressions)
gadtDeclaration :: Assignment gadtDeclaration :: Assignment
gadtDeclaration = makeTerm gadtDeclaration = makeTerm
@ -342,12 +504,18 @@ gadtDeclaration = makeTerm
generator :: Assignment generator :: Assignment
generator = makeTerm <$> symbol Generator <*> children (Syntax.Generator <$> expression <*> expression) generator = makeTerm <$> symbol Generator <*> children (Syntax.Generator <$> expression <*> expression)
guard' :: Assignment
guard' = makeTerm <$> symbol Guard <*> children (Syntax.Guard <$> expressions)
hiddenImport :: Assignment hiddenImport :: Assignment
hiddenImport = makeTerm <$> symbol Import <*> children (Syntax.HiddenImport <$> expressions) hiddenImport = makeTerm <$> symbol Import <*> children (Syntax.HiddenImport <$> expressions)
hiddenImportSpec :: Assignment.Assignment [] Grammar [Term] hiddenImportSpec :: Assignment.Assignment [] Grammar [Term]
hiddenImportSpec = symbol HiddenImportSpec *> children (manyTerm hiddenImport) hiddenImportSpec = symbol HiddenImportSpec *> children (manyTerm hiddenImport)
implicitParameterIdentifier :: Assignment
implicitParameterIdentifier = makeTerm <$> symbol ImplicitParameterIdentifier <*> (Syntax.ImplicitParameterIdentifier . Name.name <$> source)
import' :: Assignment import' :: Assignment
import' = makeTerm <$> symbol Import <*> children (Syntax.Import <$> expressions) import' = makeTerm <$> symbol Import <*> children (Syntax.Import <$> expressions)
@ -365,8 +533,14 @@ importDeclaration = makeTerm
importSpec :: Assignment.Assignment [] Grammar [Term] importSpec :: Assignment.Assignment [] Grammar [Term]
importSpec = symbol ImportSpec *> children (manyTerm import') importSpec = symbol ImportSpec *> children (manyTerm import')
inClause :: Assignment
inClause = symbol InClause *> children expressions
infixConstructorIdentifier :: Assignment
infixConstructorIdentifier = makeTerm <$> symbol InfixConstructorIdentifier <*> children (Syntax.InfixConstructorIdentifier . Name.name <$> source)
infixOperatorApp :: Assignment infixOperatorApp :: Assignment
infixOperatorApp = makeTerm <$> symbol InfixOperatorApplication <*> children (Syntax.InfixOperatorApp <$> expression <*> expression <*> expression) infixOperatorApp = makeTerm <$> symbol InfixOperatorApplication <*> children (Syntax.InfixOperatorApp <$> expression <*> (typeApp <|> emptyTerm) <*> expression <*> (expressions <|> emptyTerm))
infixOperatorPattern :: Assignment infixOperatorPattern :: Assignment
infixOperatorPattern = makeTerm <$> symbol InfixOperatorPattern <*> children (Syntax.InfixOperatorPattern <$> expression <*> operator <*> expression) infixOperatorPattern = makeTerm <$> symbol InfixOperatorPattern <*> children (Syntax.InfixOperatorPattern <$> expression <*> operator <*> expression)
@ -374,26 +548,50 @@ infixOperatorPattern = makeTerm <$> symbol InfixOperatorPattern <*> children (Sy
infixVariableIdentifier :: Assignment infixVariableIdentifier :: Assignment
infixVariableIdentifier = makeTerm <$> symbol InfixVariableIdentifier <*> children (Syntax.InfixVariableIdentifier . Name.name <$> source) infixVariableIdentifier = makeTerm <$> symbol InfixVariableIdentifier <*> children (Syntax.InfixVariableIdentifier . Name.name <$> source)
instance' :: Assignment
instance' = makeTerm <$> symbol Instance <*> children (Syntax.Instance <$> expressions)
integer :: Assignment integer :: Assignment
integer = makeTerm <$> symbol Integer <*> (Literal.Integer <$> source) integer = makeTerm <$> symbol Integer <*> (Literal.Integer <$> source)
irrefutablePattern :: Assignment
irrefutablePattern = makeTerm <$> symbol IrrefutablePattern <*> children (Syntax.IrrefutablePattern <$> expression)
kind :: Assignment kind :: Assignment
kind = kind' kind = kind'
<|> kindFunctionType <|> kindFunctionType
<|> kindListType <|> kindListType
<|> kindParenthesizedConstructor
<|> kindSignature
<|> kindTupleType
<|> star <|> star
kind' :: Assignment kind' :: Assignment
kind' = makeTerm <$> symbol Kind <*> children (Syntax.Kind <$> kind) kind' = makeTerm <$> symbol Kind <*> children (Syntax.Kind <$> expression)
kindFunctionType :: Assignment kindFunctionType :: Assignment
kindFunctionType = makeTerm <$> symbol KindFunctionType <*> children (Syntax.KindFunctionType <$> kind <*> kind) kindFunctionType = makeTerm <$> symbol KindFunctionType <*> children (Syntax.KindFunctionType <$> expression <*> expression)
kindListType :: Assignment kindListType :: Assignment
kindListType = makeTerm <$> symbol KindListType <*> children (Syntax.KindListType <$> kind) kindListType = makeTerm <$> symbol KindListType <*> children (Syntax.KindListType <$> expression)
kindParenthesizedConstructor :: Assignment
kindParenthesizedConstructor = makeTerm <$> symbol KindParenthesizedConstructor <*> children (Syntax.KindParenthesizedConstructor <$> expression)
kindSignature :: Assignment kindSignature :: Assignment
kindSignature = makeTerm <$> symbol KindSignature <*> children (Syntax.KindSignature <$ token Annotation <*> kind) kindSignature = makeTerm <$> symbol KindSignature <*> children (Syntax.KindSignature <$ token Annotation <*> expression)
kindTupleType :: Assignment
kindTupleType = makeTerm <$> symbol KindTupleType <*> children (Syntax.KindTupleType <$> manyTerm expression)
labeledConstruction :: Assignment
labeledConstruction = makeTerm <$> symbol LabeledConstruction <*> children (Syntax.LabeledConstruction <$> expression <*> manyTerm expression)
labeledPattern :: Assignment
labeledPattern = makeTerm <$> symbol LabeledPattern <*> children (Syntax.LabeledPattern <$> expressions)
labeledUpdate :: Assignment
labeledUpdate = makeTerm <$> symbol LabeledUpdate <*> children (Syntax.LabeledUpdate <$> manyTerm expression)
lambda :: Assignment lambda :: Assignment
lambda = makeTerm <$> symbol Lambda <*> children (Syntax.Lambda <$> lambdaHead <*> lambdaBody) lambda = makeTerm <$> symbol Lambda <*> children (Syntax.Lambda <$> lambdaHead <*> lambdaBody)
@ -401,6 +599,15 @@ lambda = makeTerm <$> symbol Lambda <*> children (Syntax.Lambda <$> lambdaHead <
lambdaHead = symbol LambdaHead *> children expressions lambdaHead = symbol LambdaHead *> children expressions
lambdaBody = symbol LambdaBody *> children expressions lambdaBody = symbol LambdaBody *> children expressions
lambdaCase :: Assignment
lambdaCase = makeTerm <$> symbol LambdaCase <*> children (Syntax.LambdaCase <$> manyTerm expression)
letExpression :: Assignment
letExpression = makeTerm <$> symbol LetExpression <*> children (Syntax.Let <$> manyTermsTill expression (symbol InClause) <*> inClause)
letStatement :: Assignment
letStatement = makeTerm <$> symbol LetStatement <*> children (Syntax.Let <$> manyTerm expression <*> emptyTerm)
listComprehension :: Assignment listComprehension :: Assignment
listComprehension = makeTerm <$> symbol ListComprehension <*> children (Syntax.ListComprehension <$> expression <*> manyTerm expression) listComprehension = makeTerm <$> symbol ListComprehension <*> children (Syntax.ListComprehension <$> expression <*> manyTerm expression)
@ -411,6 +618,9 @@ listExpression :: Assignment
listExpression = makeTerm <$> symbol ListExpression <*> children (Literal.Array <$> manyTerm listElement) listExpression = makeTerm <$> symbol ListExpression <*> children (Literal.Array <$> manyTerm listElement)
where listElement = symbol Expression *> children expression where listElement = symbol Expression *> children expression
listPattern :: Assignment
listPattern = makeTerm <$> symbol ListPattern <*> children (Syntax.ListPattern <$> expressions)
listType :: Assignment listType :: Assignment
listType = makeTerm <$> symbol ListType <*> children (Literal.Array <$> manyTerm type') listType = makeTerm <$> symbol ListType <*> children (Literal.Array <$> manyTerm type')
@ -418,12 +628,13 @@ module' :: Assignment
module' = makeTerm module' = makeTerm
<$> symbol Module <$> symbol Module
<*> children (Syntax.Module <*> children (Syntax.Module
<$> (term moduleIdentifier <|> emptyTerm) <$> manyTerm (comment <|> pragma)
<*> term (moduleIdentifier <|> qualifiedModuleIdentifier <|> emptyTerm)
<*> moduleExports <*> moduleExports
<*> (where' <|> expressions <|> emptyTerm)) <*> term (where' <|> expressions <|> emptyTerm))
where where
moduleExports = symbol ModuleExports *> children (manyTerm export) moduleExports = (symbol ModuleExports *> children (manyTerm export))
<|> pure [] <|> (pure [])
moduleExport :: Assignment moduleExport :: Assignment
moduleExport = makeTerm <$> symbol ModuleExport <*> children (Syntax.ModuleExport <$> expressions) moduleExport = makeTerm <$> symbol ModuleExport <*> children (Syntax.ModuleExport <$> expressions)
@ -431,8 +642,14 @@ moduleExport = makeTerm <$> symbol ModuleExport <*> children (Syntax.ModuleExpor
moduleIdentifier :: Assignment moduleIdentifier :: Assignment
moduleIdentifier = makeTerm <$> symbol ModuleIdentifier <*> (Syntax.ModuleIdentifier . Name.name <$> source) moduleIdentifier = makeTerm <$> symbol ModuleIdentifier <*> (Syntax.ModuleIdentifier . Name.name <$> source)
namedFieldPun :: Assignment
namedFieldPun = makeTerm <$> symbol NamedFieldPun <*> children (Syntax.NamedFieldPun <$> expression)
negativeLiteral :: Assignment
negativeLiteral = makeTerm <$> symbol NegativeLiteral <*> children (Syntax.NegativeLiteral <$> expression)
newConstructor :: Assignment newConstructor :: Assignment
newConstructor = makeTerm <$> symbol NewConstructor <*> children (Declaration.Constructor <$> manyTerm (context' <|> scopedTypeVariables) <*> typeConstructor <*> typeParameters) newConstructor = makeTerm <$> symbol NewConstructor <*> children (Declaration.Constructor <$> manyTerm (context' <|> scopedTypeVariables) <*> expression <*> expressions)
newType :: Assignment newType :: Assignment
newType = makeTerm <$> symbol NewtypeDeclaration <*> children (Syntax.NewType <$> manyTerm (context' <|> scopedTypeVariables) <*> typeLeft <*> newConstructor <*> (derivingClause <|> emptyTerm)) newType = makeTerm <$> symbol NewtypeDeclaration <*> children (Syntax.NewType <$> manyTerm (context' <|> scopedTypeVariables) <*> typeLeft <*> newConstructor <*> (derivingClause <|> emptyTerm))
@ -440,7 +657,10 @@ newType = makeTerm <$> symbol NewtypeDeclaration <*> children (Syntax.NewType <$
typeLeft = makeTerm <$> location <*> manyTermsTill expression (symbol NewConstructor) typeLeft = makeTerm <$> location <*> manyTermsTill expression (symbol NewConstructor)
operator :: Assignment operator :: Assignment
operator = typeOperator <|> constructorOperator <|> variableOperator operator = constructorOperator
<|> typeOperator
<|> promotedTypeOperator
<|> variableOperator
operatorSection :: Assignment operatorSection :: Assignment
operatorSection = (makeTerm <$> symbol RightOperatorSection <*> children (Syntax.RightOperatorSection <$> expression <*> expression)) operatorSection = (makeTerm <$> symbol RightOperatorSection <*> children (Syntax.RightOperatorSection <$> expression <*> expression))
@ -449,8 +669,11 @@ operatorSection = (makeTerm <$> symbol RightOperatorSection <*> children (Syntax
packageQualifiedImport :: Assignment packageQualifiedImport :: Assignment
packageQualifiedImport = makeTerm <$> symbol PackageQualifiedImport <*> (Literal.TextElement <$> source) packageQualifiedImport = makeTerm <$> symbol PackageQualifiedImport <*> (Literal.TextElement <$> source)
parenthesizedConstructorOperator :: Assignment
parenthesizedConstructorOperator = symbol ParenthesizedConstructorOperator *> children expression
parenthesizedExpression :: Assignment parenthesizedExpression :: Assignment
parenthesizedExpression = symbol ParenthesizedExpression *> children expression parenthesizedExpression = symbol ParenthesizedExpression *> children expressions
parenthesizedPattern :: Assignment parenthesizedPattern :: Assignment
parenthesizedPattern = symbol ParenthesizedPattern *> children expressions parenthesizedPattern = symbol ParenthesizedPattern *> children expressions
@ -459,7 +682,10 @@ parenthesizedTypePattern :: Assignment
parenthesizedTypePattern = symbol ParenthesizedTypePattern *> children expressions parenthesizedTypePattern = symbol ParenthesizedTypePattern *> children expressions
pattern' :: Assignment pattern' :: Assignment
pattern' = symbol Pattern *> children expression pattern' = symbol Pattern *> children expressions
patternGuard :: Assignment
patternGuard = makeTerm <$> symbol PatternGuard <*> children (Syntax.PatternGuard <$> expression <*> (expression <|> emptyTerm))
pragma :: Assignment pragma :: Assignment
pragma = makeTerm <$> symbol Pragma <*> (Syntax.Pragma <$> source) pragma = makeTerm <$> symbol Pragma <*> (Syntax.Pragma <$> source)
@ -473,6 +699,9 @@ primitiveConstructorIdentifier = makeTerm <$> symbol PrimitiveConstructorIdentif
primitiveVariableIdentifier :: Assignment primitiveVariableIdentifier :: Assignment
primitiveVariableIdentifier = makeTerm <$> symbol PrimitiveVariableIdentifier <*> (Syntax.PrimitiveVariableIdentifier . Name.name <$> source) primitiveVariableIdentifier = makeTerm <$> symbol PrimitiveVariableIdentifier <*> (Syntax.PrimitiveVariableIdentifier . Name.name <$> source)
promotedTypeOperator :: Assignment
promotedTypeOperator = makeTerm <$> symbol PromotedTypeOperator <*> children (Syntax.PromotedTypeOperator <$> expression)
qualifiedConstructorIdentifier :: Assignment qualifiedConstructorIdentifier :: Assignment
qualifiedConstructorIdentifier = makeTerm <$> symbol QualifiedConstructorIdentifier <*> children (Syntax.QualifiedConstructorIdentifier <$> someTerm' expression) qualifiedConstructorIdentifier = makeTerm <$> symbol QualifiedConstructorIdentifier <*> children (Syntax.QualifiedConstructorIdentifier <$> someTerm' expression)
@ -490,18 +719,48 @@ qualifiedInfixVariableIdentifier = makeTerm <$> symbol QualifiedInfixVariableIde
qualifiedModuleIdentifier :: Assignment qualifiedModuleIdentifier :: Assignment
qualifiedModuleIdentifier = makeTerm <$> symbol QualifiedModuleIdentifier <*> children (Syntax.QualifiedModuleIdentifier <$> someTerm' expression) qualifiedModuleIdentifier = makeTerm <$> symbol QualifiedModuleIdentifier <*> children (Syntax.QualifiedModuleIdentifier <$> someTerm' expression)
qualifiedTypeClassIdentifier :: Assignment
qualifiedTypeClassIdentifier = makeTerm <$> symbol QualifiedTypeClassIdentifier <*> children (Syntax.QualifiedTypeClassIdentifier <$> someTerm' expression)
qualifiedTypeConstructorIdentifier :: Assignment qualifiedTypeConstructorIdentifier :: Assignment
qualifiedTypeConstructorIdentifier = makeTerm <$> symbol QualifiedTypeConstructorIdentifier <*> children (Syntax.QualifiedTypeConstructorIdentifier <$> someTerm' expression) qualifiedTypeConstructorIdentifier = makeTerm <$> symbol QualifiedTypeConstructorIdentifier <*> children (Syntax.QualifiedTypeConstructorIdentifier <$> someTerm' expression)
qualifiedVariableIdentifier :: Assignment qualifiedVariableIdentifier :: Assignment
qualifiedVariableIdentifier = makeTerm <$> symbol QualifiedVariableIdentifier <*> children (Syntax.QualifiedVariableIdentifier <$> someTerm' expression) qualifiedVariableIdentifier = makeTerm <$> symbol QualifiedVariableIdentifier <*> children (Syntax.QualifiedVariableIdentifier <$> someTerm' expression)
quasiQuotation :: Assignment
quasiQuotation = makeTerm <$> symbol QuasiQuotation <*> children (Syntax.QuasiQuotation <$> (expression <|> emptyTerm) <*> expression)
quasiQuotationDeclaration :: Assignment
quasiQuotationDeclaration = makeTerm <$> token QuasiQuotationDeclaration <*> pure Syntax.QuasiQuotationDeclaration
quasiQuotationExpression :: Assignment
quasiQuotationExpression = makeTerm <$> token QuasiQuotationExpression <*> pure Syntax.QuasiQuotationExpression
quasiQuotationExpressionBody :: Assignment
quasiQuotationExpressionBody = makeTerm <$> symbol QuasiQuotationExpressionBody <*> (Syntax.QuasiQuotationExpressionBody . Name.name <$> source)
quasiQuotationPattern :: Assignment
quasiQuotationPattern = makeTerm <$> token QuasiQuotationPattern <*> pure Syntax.QuasiQuotationPattern
quasiQuotationQuoter :: Assignment
quasiQuotationQuoter = makeTerm <$> symbol QuasiQuotationQuoter <*> (Syntax.QuasiQuotationQuoter . Name.name <$> source)
quasiQuotationType :: Assignment
quasiQuotationType = makeTerm <$> token QuasiQuotationType <*> pure Syntax.QuasiQuotationType
quotedName :: Assignment quotedName :: Assignment
quotedName = makeTerm <$> symbol QuotedName <*> children (Syntax.QuotedName <$> expression) quotedName = makeTerm <$> symbol QuotedName <*> children (Syntax.QuotedName <$> expression)
recordWildCards :: Assignment
recordWildCards = makeTerm <$> symbol RecordWildCards <*> (Syntax.RecordWildCards <$ source)
scopedTypeVariables :: Assignment scopedTypeVariables :: Assignment
scopedTypeVariables = makeTerm <$> symbol ScopedTypeVariables <*> children (Syntax.ScopedTypeVariables <$> expressions <* token Dot) scopedTypeVariables = makeTerm <$> symbol ScopedTypeVariables <*> children (Syntax.ScopedTypeVariables <$> expressions <* token Dot)
splice :: Assignment
splice = makeTerm <$> symbol Splice <*> children (Syntax.Splice <$> expression)
standaloneDerivingInstance :: Assignment standaloneDerivingInstance :: Assignment
standaloneDerivingInstance = makeTerm <$> symbol StandaloneDerivingDeclaration <*> children (Syntax.StandaloneDerivingInstance <$> manyTerm (context' <|> scopedTypeVariables) <*> expression <*> instance') standaloneDerivingInstance = makeTerm <$> symbol StandaloneDerivingDeclaration <*> children (Syntax.StandaloneDerivingInstance <$> manyTerm (context' <|> scopedTypeVariables) <*> expression <*> instance')
where where
@ -510,6 +769,9 @@ standaloneDerivingInstance = makeTerm <$> symbol StandaloneDerivingDeclaration <
star :: Assignment star :: Assignment
star = makeTerm <$> token Star <*> pure Syntax.Star star = makeTerm <$> token Star <*> pure Syntax.Star
strictPattern :: Assignment
strictPattern = makeTerm <$> symbol StrictPattern <*> children (Syntax.StrictPattern <$> expression)
strictType :: Assignment strictType :: Assignment
strictType = makeTerm' strictType = makeTerm'
<$> symbol StrictType <$> symbol StrictType
@ -519,32 +781,14 @@ strictType = makeTerm'
string :: Assignment string :: Assignment
string = makeTerm <$> symbol String <*> (Literal.TextElement <$> source) string = makeTerm <$> symbol String <*> (Literal.TextElement <$> source)
tuple :: Assignment
tuple = makeTerm <$> symbol TupleExpression <*> children (Syntax.Tuple <$> manyTerm expression)
tuplePattern :: Assignment tuplePattern :: Assignment
tuplePattern = makeTerm <$> symbol TuplePattern <*> children (Syntax.TuplePattern <$> manyTerm expression) tuplePattern = makeTerm <$> symbol TuplePattern <*> children (Syntax.TuplePattern <$> manyTerm expression)
tupleType :: Assignment tupleType :: Assignment
tupleType = makeTerm <$> symbol TupleType <*> children (Literal.Tuple <$> manyTerm type') tupleType = makeTerm <$> symbol TupleType <*> children (Literal.Tuple <$> manyTerm expression)
typeClassIdentifier :: Assignment
typeClassIdentifier = makeTerm <$> symbol TypeClassIdentifier <*> (Syntax.TypeClassIdentifier . Name.name <$> source)
typeConstructorExport :: Assignment
typeConstructorExport = makeTerm <$> symbol TypeConstructorExport <*> children (Syntax.TypeConstructorExport <$> expression)
typeConstructorIdentifier :: Assignment
typeConstructorIdentifier = makeTerm <$> symbol TypeConstructorIdentifier <*> (Syntax.TypeConstructorIdentifier . Name.name <$> source)
typeOperator :: Assignment
typeOperator = makeTerm <$> symbol TypeOperator <*> (Syntax.TypeOperator . Name.name <$> source)
typeSignature :: Assignment
typeSignature = makeTerm <$> symbol TypeSignature <*> children (Syntax.TypeSignature <$> variableIdentifier <* token Annotation <*> manyTerm (context' <|> scopedTypeVariables) <*> expressions)
typeVariableIdentifier :: Assignment
typeVariableIdentifier = makeTerm <$> symbol TypeVariableIdentifier <*> (Syntax.TypeVariableIdentifier . Name.name <$> source)
tuple :: Assignment
tuple = makeTerm <$> symbol TupleExpression <*> children (Syntax.Tuple <$> manyTerm expression)
tuplingConstructor :: Assignment tuplingConstructor :: Assignment
tuplingConstructor = makeTerm <$> symbol TuplingConstructor <*> (tupleWithArity <$> rawSource) tuplingConstructor = makeTerm <$> symbol TuplingConstructor <*> (tupleWithArity <$> rawSource)
@ -566,11 +810,25 @@ type'' = makeTerm
<$> symbol Type <$> symbol Type
<*> children (Syntax.Type <$> expression <*> typeParameters <*> (kindSignature <|> emptyTerm)) <*> children (Syntax.Type <$> expression <*> typeParameters <*> (kindSignature <|> emptyTerm))
typeParameters :: Assignment typeApp :: Assignment
typeParameters = makeTerm <$> location <*> (Type.TypeParameters <$> (manyTermsTill expression (symbol Annotation) <|> manyTerm expression)) typeApp = makeTerm <$> symbol TypeApplication <*> children (Syntax.TypeApp <$> expression)
typePattern :: Assignment typeClass :: Assignment
typePattern = makeTerm <$> symbol TypePattern <*> children (Syntax.TypePattern <$> expressions) typeClass = makeTerm <$> symbol TypeClassDeclaration <*> children (Syntax.TypeClass
<$> (context' <|> emptyTerm)
<*> expression
<*> manyTermsTill expression (symbol Where)
<*> where')
typeClassIdentifier :: Assignment
typeClassIdentifier = makeTerm <$> symbol TypeClassIdentifier <*> (Syntax.TypeClassIdentifier . Name.name <$> source)
typeClassInstance :: Assignment
typeClassInstance = makeTerm <$> symbol TypeClassInstanceDeclaration <*> children (Syntax.TypeClassInstance
<$> manyTerm (context' <|> scopedTypeVariables)
<*> expression
<*> expression
<*> (where' <|> emptyTerm))
typeConstructor :: Assignment typeConstructor :: Assignment
typeConstructor = constructorIdentifier typeConstructor = constructorIdentifier
@ -578,6 +836,7 @@ typeConstructor = constructorIdentifier
<|> listConstructor <|> listConstructor
<|> listType <|> listType
<|> qualifiedModuleIdentifier <|> qualifiedModuleIdentifier
<|> qualifiedTypeClassIdentifier
<|> qualifiedTypeConstructorIdentifier <|> qualifiedTypeConstructorIdentifier
<|> quotedName <|> quotedName
<|> tupleType <|> tupleType
@ -586,15 +845,54 @@ typeConstructor = constructorIdentifier
<|> typeConstructorIdentifier <|> typeConstructorIdentifier
<|> unitConstructor <|> unitConstructor
typeConstructorExport :: Assignment
typeConstructorExport = makeTerm <$> symbol TypeConstructorExport <*> children (Syntax.TypeConstructorExport <$> expression)
typeConstructorIdentifier :: Assignment
typeConstructorIdentifier = makeTerm <$> symbol TypeConstructorIdentifier <*> (Syntax.TypeConstructorIdentifier . Name.name <$> source)
typeFamily :: Assignment
typeFamily = makeTerm <$> symbol TypeFamilyDeclaration <*> children (Syntax.TypeFamily <$> expression <*> manyTermsTill expression typeFamilySeperator <*> (typeSignature <|> kindSignature <|> emptyTerm) <*> (where' <|> emptyTerm))
where
typeFamilySeperator = symbol TypeSignature
<|> symbol KindSignature
<|> symbol Where
typeInstance :: Assignment
typeInstance = makeTerm <$> symbol TypeInstanceDeclaration <*> children (Syntax.TypeInstance <$> typeInstanceType <*> typeInstanceBody)
where
typeInstanceType = makeTerm <$> location <*> manyTermsTill expression (symbol TypeInstanceBody)
typeInstanceBody = symbol TypeInstanceBody *> children expressions
typeOperator :: Assignment
typeOperator = makeTerm <$> symbol TypeOperator <*> (Syntax.TypeOperator . Name.name <$> source)
typeSignature :: Assignment
typeSignature = makeTerm <$> symbol TypeSignature <*> children (Syntax.TypeSignature <$> manyTermsTill expression (symbol Annotation) <* token Annotation <*> manyTerm (context' <|> scopedTypeVariables) <*> expressions)
typeParameters :: Assignment
typeParameters = makeTerm <$> location <*> (Type.TypeParameters <$> (manyTermsTill expression (symbol Annotation) <|> manyTerm expression))
typePattern :: Assignment
typePattern = makeTerm <$> symbol TypePattern <*> children (Syntax.TypePattern <$> expressions)
typeSynonymDeclaration :: Assignment typeSynonymDeclaration :: Assignment
typeSynonymDeclaration = makeTerm typeSynonymDeclaration = makeTerm
<$> symbol TypeSynonymDeclaration <$> symbol TypeSynonymDeclaration
<*> children (typeSynonym <$> typeLeft <*> typeRight) <*> children (typeSynonym <$> typeLeft <*> typeRight)
where where
typeLeft = makeTerm <$> location <*> manyTill expression (symbol TypeSynonymBody) typeLeft = makeTerm <$> location <*> manyTill expression typeRightSeperator
typeRight = symbol TypeSynonymBody *> children ((,) <$> manyTerm (context' <|> scopedTypeVariables) <*> expression) typeRight = (symbol TypeSynonymBody *> children ((,) <$> manyTerm (context' <|> scopedTypeVariables) <*> expression))
<|> ((,) [] <$> typeSignature)
<|> ((,) [] <$> kindSignature)
typeRightSeperator = symbol TypeSynonymBody
<|> symbol TypeSignature
<|> symbol KindSignature
typeSynonym typeLeft (contexts, typeRight) = Syntax.TypeSynonym typeLeft contexts typeRight typeSynonym typeLeft (contexts, typeRight) = Syntax.TypeSynonym typeLeft contexts typeRight
typeVariableIdentifier :: Assignment
typeVariableIdentifier = makeTerm <$> symbol TypeVariableIdentifier <*> (Syntax.TypeVariableIdentifier . Name.name <$> source)
unitConstructor :: Assignment unitConstructor :: Assignment
unitConstructor = makeTerm <$> token UnitConstructor <*> pure Syntax.UnitConstructor unitConstructor = makeTerm <$> token UnitConstructor <*> pure Syntax.UnitConstructor
@ -610,9 +908,15 @@ variableSymbol = makeTerm <$> (symbol VariableSymbol <|> symbol VariableSymbol')
variableIdentifiers :: Assignment variableIdentifiers :: Assignment
variableIdentifiers = makeTerm <$> location <*> many variableIdentifier variableIdentifiers = makeTerm <$> location <*> many variableIdentifier
viewPattern :: Assignment
viewPattern = makeTerm <$> symbol ViewPattern <*> children (Syntax.ViewPattern <$> expression <*> expression)
where' :: Assignment where' :: Assignment
where' = makeTerm <$> (symbol Where <|> symbol Where') <*> children (manyTerm expression) where' = makeTerm <$> (symbol Where <|> symbol Where') <*> children (manyTerm expression)
wildcard :: Assignment
wildcard = makeTerm <$> token Wildcard <*> pure Syntax.Wildcard
-- | Helpers -- | Helpers
commentedTerm :: Assignment -> Assignment commentedTerm :: Assignment -> Assignment

View File

@ -7,9 +7,10 @@ import Diffing.Algorithm
import Prelude import Prelude
import Prologue import Prologue
data Module a = Module { moduleIdentifier :: !a data Module a = Module { moduleContext :: [a]
, moduleExports :: ![a] , moduleIdentifier :: a
, moduleStatements :: !a , moduleExports :: [a]
, moduleStatements :: a
} }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable) deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
@ -19,7 +20,16 @@ instance Show1 Module where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable Module instance Evaluatable Module
data StrictType a = StrictType { strictTypeIdentifier :: !a, strictTypeParameters :: !a } newtype StrictPattern a = StrictPattern a
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 StrictPattern where liftEq = genericLiftEq
instance Ord1 StrictPattern where liftCompare = genericLiftCompare
instance Show1 StrictPattern where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable StrictPattern
data StrictType a = StrictType { strictTypeIdentifier :: a, strictTypeParameters :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable) deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 StrictType where liftEq = genericLiftEq instance Eq1 StrictType where liftEq = genericLiftEq
@ -28,7 +38,7 @@ instance Show1 StrictType where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable StrictType instance Evaluatable StrictType
newtype StrictTypeVariable a = StrictTypeVariable { strictTypeVariableIdentifier :: a } newtype StrictTypeVariable a = StrictTypeVariable a
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable) deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 StrictTypeVariable where liftEq = genericLiftEq instance Eq1 StrictTypeVariable where liftEq = genericLiftEq
@ -91,7 +101,7 @@ instance Show1 FunctionConstructor where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable FunctionConstructor instance Evaluatable FunctionConstructor
data RecordDataConstructor a = RecordDataConstructor { recordDataConstructorName :: !a, recordDataConstructorFields :: !a } data RecordDataConstructor a = RecordDataConstructor { recordDataConstructorContext :: [a], recordDataConstructorName :: !a, recordDataConstructorFields :: !a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable) deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 RecordDataConstructor where liftEq = genericLiftEq instance Eq1 RecordDataConstructor where liftEq = genericLiftEq
@ -171,7 +181,7 @@ instance Show1 FunctionType where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable FunctionType instance Evaluatable FunctionType
data TypeSignature a = TypeSignature { typeSignatureName :: a, typeSignatureContext :: [a], typeSignatureContent :: a } data TypeSignature a = TypeSignature { typeSignatureName :: [a], typeSignatureContext :: [a], typeSignatureContent :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable) deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 TypeSignature where liftEq = genericLiftEq instance Eq1 TypeSignature where liftEq = genericLiftEq
@ -180,6 +190,15 @@ instance Show1 TypeSignature where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable TypeSignature instance Evaluatable TypeSignature
data ExpressionTypeSignature a = ExpressionTypeSignature { expressionTypeSignatureName :: [a], expressionTypeSignatureContext :: [a], expressionTypeSignatureContent :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 ExpressionTypeSignature where liftEq = genericLiftEq
instance Ord1 ExpressionTypeSignature where liftCompare = genericLiftCompare
instance Show1 ExpressionTypeSignature where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable ExpressionTypeSignature
newtype KindSignature a = KindSignature { kindSignatureContent :: a } newtype KindSignature a = KindSignature { kindSignatureContent :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable) deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
@ -225,19 +244,65 @@ instance Show1 Star where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable Star instance Evaluatable Star
data QualifiedEntityIdentifier a = QualifiedTypeConstructorIdentifier (NonEmpty a) data QualifiedTypeClassIdentifier a = QualifiedTypeClassIdentifier (NonEmpty a)
| QualifiedConstructorIdentifier (NonEmpty a)
| QualifiedInfixVariableIdentifier (NonEmpty a)
| QualifiedModuleIdentifier (NonEmpty a)
| QualifiedVariableIdentifier (NonEmpty a)
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Mergeable, Ord, Show, ToJSONFields1, Traversable) deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 QualifiedEntityIdentifier where liftEq = genericLiftEq instance Eq1 QualifiedTypeClassIdentifier where liftEq = genericLiftEq
instance Ord1 QualifiedEntityIdentifier where liftCompare = genericLiftCompare instance Ord1 QualifiedTypeClassIdentifier where liftCompare = genericLiftCompare
instance Show1 QualifiedEntityIdentifier where liftShowsPrec = genericLiftShowsPrec instance Show1 QualifiedTypeClassIdentifier where liftShowsPrec = genericLiftShowsPrec
instance Hashable1 QualifiedEntityIdentifier where liftHashWithSalt = foldl instance Hashable1 QualifiedTypeClassIdentifier where liftHashWithSalt = foldl
instance Evaluatable QualifiedEntityIdentifier instance Evaluatable QualifiedTypeClassIdentifier
newtype QualifiedTypeConstructorIdentifier a = QualifiedTypeConstructorIdentifier (NonEmpty a)
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 QualifiedTypeConstructorIdentifier where liftEq = genericLiftEq
instance Ord1 QualifiedTypeConstructorIdentifier where liftCompare = genericLiftCompare
instance Show1 QualifiedTypeConstructorIdentifier where liftShowsPrec = genericLiftShowsPrec
instance Hashable1 QualifiedTypeConstructorIdentifier where liftHashWithSalt = foldl
instance Evaluatable QualifiedTypeConstructorIdentifier
newtype QualifiedConstructorIdentifier a = QualifiedConstructorIdentifier (NonEmpty a)
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 QualifiedConstructorIdentifier where liftEq = genericLiftEq
instance Ord1 QualifiedConstructorIdentifier where liftCompare = genericLiftCompare
instance Show1 QualifiedConstructorIdentifier where liftShowsPrec = genericLiftShowsPrec
instance Hashable1 QualifiedConstructorIdentifier where liftHashWithSalt = foldl
instance Evaluatable QualifiedConstructorIdentifier
newtype QualifiedInfixVariableIdentifier a = QualifiedInfixVariableIdentifier (NonEmpty a)
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 QualifiedInfixVariableIdentifier where liftEq = genericLiftEq
instance Ord1 QualifiedInfixVariableIdentifier where liftCompare = genericLiftCompare
instance Show1 QualifiedInfixVariableIdentifier where liftShowsPrec = genericLiftShowsPrec
instance Hashable1 QualifiedInfixVariableIdentifier where liftHashWithSalt = foldl
instance Evaluatable QualifiedInfixVariableIdentifier
newtype QualifiedModuleIdentifier a = QualifiedModuleIdentifier (NonEmpty a)
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 QualifiedModuleIdentifier where liftEq = genericLiftEq
instance Ord1 QualifiedModuleIdentifier where liftCompare = genericLiftCompare
instance Show1 QualifiedModuleIdentifier where liftShowsPrec = genericLiftShowsPrec
instance Hashable1 QualifiedModuleIdentifier where liftHashWithSalt = foldl
instance Evaluatable QualifiedModuleIdentifier
newtype QualifiedVariableIdentifier a = QualifiedVariableIdentifier (NonEmpty a)
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 QualifiedVariableIdentifier where liftEq = genericLiftEq
instance Ord1 QualifiedVariableIdentifier where liftCompare = genericLiftCompare
instance Show1 QualifiedVariableIdentifier where liftShowsPrec = genericLiftShowsPrec
instance Hashable1 QualifiedVariableIdentifier where liftHashWithSalt = foldl
instance Evaluatable QualifiedVariableIdentifier
data AnnotatedTypeVariable a = AnnotatedTypeVariable { annotatedTypeVariableIdentifier :: a, annotatedTypeVariableannotation :: a } data AnnotatedTypeVariable a = AnnotatedTypeVariable { annotatedTypeVariableIdentifier :: a, annotatedTypeVariableannotation :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable) deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
@ -347,33 +412,140 @@ instance Show1 EqualityConstraint where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable EqualityConstraint instance Evaluatable EqualityConstraint
data EntityIdentifier a = TypeVariableIdentifier Name newtype TypeVariableIdentifier a = TypeVariableIdentifier Name
| TypeConstructorIdentifier Name
| ModuleIdentifier Name
| ConstructorIdentifier Name
| InfixVariableIdentifier Name
| TypeClassIdentifier Name
| VariableIdentifier Name
| PrimitiveConstructorIdentifier Name
| PrimitiveVariableIdentifier Name
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable) deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 EntityIdentifier where liftEq = genericLiftEq instance Eq1 TypeVariableIdentifier where liftEq = genericLiftEq
instance Ord1 EntityIdentifier where liftCompare = genericLiftCompare instance Ord1 TypeVariableIdentifier where liftCompare = genericLiftCompare
instance Show1 EntityIdentifier where liftShowsPrec = genericLiftShowsPrec instance Show1 TypeVariableIdentifier where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable EntityIdentifier instance Evaluatable TypeVariableIdentifier
data Operator a = VariableOperator a newtype TypeConstructorIdentifier a = TypeConstructorIdentifier Name
| ConstructorOperator a
| TypeOperator Name
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable) deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 Operator where liftEq = genericLiftEq instance Eq1 TypeConstructorIdentifier where liftEq = genericLiftEq
instance Ord1 Operator where liftCompare = genericLiftCompare instance Ord1 TypeConstructorIdentifier where liftCompare = genericLiftCompare
instance Show1 Operator where liftShowsPrec = genericLiftShowsPrec instance Show1 TypeConstructorIdentifier where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable Operator instance Evaluatable TypeConstructorIdentifier
newtype ModuleIdentifier a = ModuleIdentifier Name
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 ModuleIdentifier where liftEq = genericLiftEq
instance Ord1 ModuleIdentifier where liftCompare = genericLiftCompare
instance Show1 ModuleIdentifier where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable ModuleIdentifier
newtype ConstructorIdentifier a = ConstructorIdentifier Name
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 ConstructorIdentifier where liftEq = genericLiftEq
instance Ord1 ConstructorIdentifier where liftCompare = genericLiftCompare
instance Show1 ConstructorIdentifier where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable ConstructorIdentifier
newtype ImplicitParameterIdentifier a = ImplicitParameterIdentifier Name
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 ImplicitParameterIdentifier where liftEq = genericLiftEq
instance Ord1 ImplicitParameterIdentifier where liftCompare = genericLiftCompare
instance Show1 ImplicitParameterIdentifier where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable ImplicitParameterIdentifier
newtype InfixConstructorIdentifier a = InfixConstructorIdentifier Name
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 InfixConstructorIdentifier where liftEq = genericLiftEq
instance Ord1 InfixConstructorIdentifier where liftCompare = genericLiftCompare
instance Show1 InfixConstructorIdentifier where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable InfixConstructorIdentifier
newtype InfixVariableIdentifier a = InfixVariableIdentifier Name
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 InfixVariableIdentifier where liftEq = genericLiftEq
instance Ord1 InfixVariableIdentifier where liftCompare = genericLiftCompare
instance Show1 InfixVariableIdentifier where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable InfixVariableIdentifier
newtype TypeClassIdentifier a = TypeClassIdentifier Name
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 TypeClassIdentifier where liftEq = genericLiftEq
instance Ord1 TypeClassIdentifier where liftCompare = genericLiftCompare
instance Show1 TypeClassIdentifier where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable TypeClassIdentifier
newtype VariableIdentifier a = VariableIdentifier Name
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 VariableIdentifier where liftEq = genericLiftEq
instance Ord1 VariableIdentifier where liftCompare = genericLiftCompare
instance Show1 VariableIdentifier where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable VariableIdentifier
newtype PrimitiveConstructorIdentifier a = PrimitiveConstructorIdentifier Name
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 PrimitiveConstructorIdentifier where liftEq = genericLiftEq
instance Ord1 PrimitiveConstructorIdentifier where liftCompare = genericLiftCompare
instance Show1 PrimitiveConstructorIdentifier where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable PrimitiveConstructorIdentifier
newtype PrimitiveVariableIdentifier a = PrimitiveVariableIdentifier Name
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 PrimitiveVariableIdentifier where liftEq = genericLiftEq
instance Ord1 PrimitiveVariableIdentifier where liftCompare = genericLiftCompare
instance Show1 PrimitiveVariableIdentifier where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable PrimitiveVariableIdentifier
newtype VariableOperator a = VariableOperator a
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 VariableOperator where liftEq = genericLiftEq
instance Ord1 VariableOperator where liftCompare = genericLiftCompare
instance Show1 VariableOperator where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable VariableOperator
newtype ConstructorOperator a = ConstructorOperator a
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 ConstructorOperator where liftEq = genericLiftEq
instance Ord1 ConstructorOperator where liftCompare = genericLiftCompare
instance Show1 ConstructorOperator where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable ConstructorOperator
newtype TypeOperator a = TypeOperator Name
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 TypeOperator where liftEq = genericLiftEq
instance Ord1 TypeOperator where liftCompare = genericLiftCompare
instance Show1 TypeOperator where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable TypeOperator
newtype PromotedTypeOperator a = PromotedTypeOperator a
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 PromotedTypeOperator where liftEq = genericLiftEq
instance Ord1 PromotedTypeOperator where liftCompare = genericLiftCompare
instance Show1 PromotedTypeOperator where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable PromotedTypeOperator
newtype ConstructorSymbol a = ConstructorSymbol { constructorSymbolName :: Name } newtype ConstructorSymbol a = ConstructorSymbol { constructorSymbolName :: Name }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable) deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
@ -447,8 +619,7 @@ instance Show1 ImportAlias where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable ImportAlias instance Evaluatable ImportAlias
data App a = App { appLeft :: a, appRight :: a } data App a = App { appLeft :: a, appLeftTypeApp :: a, appRight :: a }
| InfixOperatorApp { appLeft :: a, infixOperator :: a, appRight :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable) deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 App where liftEq = genericLiftEq instance Eq1 App where liftEq = genericLiftEq
@ -457,6 +628,24 @@ instance Show1 App where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable App instance Evaluatable App
data InfixOperatorApp a = InfixOperatorApp { infixOperatorAppLeft :: a, infixOperatorAppLeftTypeApp :: a, infixOperatorAppOperator :: a, infixOperatorAppRight :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 InfixOperatorApp where liftEq = genericLiftEq
instance Ord1 InfixOperatorApp where liftCompare = genericLiftCompare
instance Show1 InfixOperatorApp where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable InfixOperatorApp
newtype TypeApp a = TypeApp { typeAppType :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 TypeApp where liftEq = genericLiftEq
instance Ord1 TypeApp where liftCompare = genericLiftCompare
instance Show1 TypeApp where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable TypeApp
data ListComprehension a = ListComprehension { comprehensionValue :: a, comprehensionSource :: [a] } data ListComprehension a = ListComprehension { comprehensionValue :: a, comprehensionSource :: [a] }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable) deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
@ -493,10 +682,8 @@ instance Show1 TuplePattern where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable TuplePattern instance Evaluatable TuplePattern
data ArithmeticSequence a = EnumFrom a -- e.g. [1..] -- e.g. [1..], [1,2..], [1,2..10]
| EnumFromThen a a -- e.g. [1,2..] data ArithmeticSequence a = ArithmeticSequence { from :: a, next :: Maybe a, to :: Maybe a }
| EnumFromTo a a -- e.g. [1..2]
| EnumFromThenTo a a a -- e.g. [1,2..10]
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable) deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 ArithmeticSequence where liftEq = genericLiftEq instance Eq1 ArithmeticSequence where liftEq = genericLiftEq
@ -505,15 +692,23 @@ instance Show1 ArithmeticSequence where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable ArithmeticSequence instance Evaluatable ArithmeticSequence
data OperatorSection a = RightOperatorSection a a data RightOperatorSection a = RightOperatorSection a a
| LeftOperatorSection a a
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable) deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 OperatorSection where liftEq = genericLiftEq instance Eq1 RightOperatorSection where liftEq = genericLiftEq
instance Ord1 OperatorSection where liftCompare = genericLiftCompare instance Ord1 RightOperatorSection where liftCompare = genericLiftCompare
instance Show1 OperatorSection where liftShowsPrec = genericLiftShowsPrec instance Show1 RightOperatorSection where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable OperatorSection instance Evaluatable RightOperatorSection
data LeftOperatorSection a = LeftOperatorSection a a
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 LeftOperatorSection where liftEq = genericLiftEq
instance Ord1 LeftOperatorSection where liftCompare = genericLiftCompare
instance Show1 LeftOperatorSection where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable LeftOperatorSection
newtype ConstructorPattern a = ConstructorPattern a newtype ConstructorPattern a = ConstructorPattern a
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable) deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
@ -525,7 +720,7 @@ instance Show1 ConstructorPattern where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable ConstructorPattern instance Evaluatable ConstructorPattern
-- e.g. `a <- b` in a Haskell do block. -- e.g. `a <- b` in a Haskell do block.
data BindPattern a = BindPattern { bindPatternLeft :: a, bindPatternRight :: a } data BindPattern a = BindPattern { bindPatternLeft :: [a], bindPatternRight :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable) deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 BindPattern where liftEq = genericLiftEq instance Eq1 BindPattern where liftEq = genericLiftEq
@ -561,3 +756,368 @@ instance Ord1 PrefixNegation where liftCompare = genericLiftCompare
instance Show1 PrefixNegation where liftShowsPrec = genericLiftShowsPrec instance Show1 PrefixNegation where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable PrefixNegation instance Evaluatable PrefixNegation
newtype CPPDirective a = CPPDirective Text
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 CPPDirective where liftEq = genericLiftEq
instance Ord1 CPPDirective where liftCompare = genericLiftCompare
instance Show1 CPPDirective where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable CPPDirective
data QuasiQuotation a = QuasiQuotation { quasiQuotationHead :: a, quasiQuotationBody :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 QuasiQuotation where liftEq = genericLiftEq
instance Ord1 QuasiQuotation where liftCompare = genericLiftCompare
instance Show1 QuasiQuotation where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable QuasiQuotation
newtype QuasiQuotationExpressionBody a = QuasiQuotationExpressionBody Name
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 QuasiQuotationExpressionBody where liftEq = genericLiftEq
instance Ord1 QuasiQuotationExpressionBody where liftCompare = genericLiftCompare
instance Show1 QuasiQuotationExpressionBody where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable QuasiQuotationExpressionBody
data QuasiQuotationPattern a = QuasiQuotationPattern
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 QuasiQuotationPattern where liftEq = genericLiftEq
instance Ord1 QuasiQuotationPattern where liftCompare = genericLiftCompare
instance Show1 QuasiQuotationPattern where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable QuasiQuotationPattern
data QuasiQuotationType a = QuasiQuotationType
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 QuasiQuotationType where liftEq = genericLiftEq
instance Ord1 QuasiQuotationType where liftCompare = genericLiftCompare
instance Show1 QuasiQuotationType where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable QuasiQuotationType
data QuasiQuotationDeclaration a = QuasiQuotationDeclaration
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 QuasiQuotationDeclaration where liftEq = genericLiftEq
instance Ord1 QuasiQuotationDeclaration where liftCompare = genericLiftCompare
instance Show1 QuasiQuotationDeclaration where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable QuasiQuotationDeclaration
newtype QuasiQuotationQuoter a = QuasiQuotationQuoter Name
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 QuasiQuotationQuoter where liftEq = genericLiftEq
instance Ord1 QuasiQuotationQuoter where liftCompare = genericLiftCompare
instance Show1 QuasiQuotationQuoter where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable QuasiQuotationQuoter
data QuasiQuotationExpression a = QuasiQuotationExpression
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 QuasiQuotationExpression where liftEq = genericLiftEq
instance Ord1 QuasiQuotationExpression where liftCompare = genericLiftCompare
instance Show1 QuasiQuotationExpression where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable QuasiQuotationExpression
newtype Splice a = Splice a
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 Splice where liftEq = genericLiftEq
instance Ord1 Splice where liftCompare = genericLiftCompare
instance Show1 Splice where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable Splice
data TypeClass a = TypeClass { typeClassContext :: a, typeClassIdentifier :: a, typeClassParameters :: [a], typeClassBody :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 TypeClass where liftEq = genericLiftEq
instance Ord1 TypeClass where liftCompare = genericLiftCompare
instance Show1 TypeClass where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable TypeClass
data Fixity' a = Fixity' { fixityPrecedence :: a, fixityIdentifier :: [a] }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 Fixity' where liftEq = genericLiftEq
instance Ord1 Fixity' where liftCompare = genericLiftCompare
instance Show1 Fixity' where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable Fixity'
-- The default signature of a type class. The default signature has the same shape as a TypeSignature Assignment.
data DefaultSignature a = DefaultSignature { defaultSignatureName :: [a], defaultSignatureContext :: [a], defaultSignatureContent :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 DefaultSignature where liftEq = genericLiftEq
instance Ord1 DefaultSignature where liftCompare = genericLiftCompare
instance Show1 DefaultSignature where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable DefaultSignature
data TypeFamily a = TypeFamily { typeFamilyIdentifier :: a, typeFamilyParameters :: [a], typeFamilySignature :: a, typeFamilyBody :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 TypeFamily where liftEq = genericLiftEq
instance Ord1 TypeFamily where liftCompare = genericLiftCompare
instance Show1 TypeFamily where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable TypeFamily
newtype FunctionalDependency a = FunctionalDependency { functionalDependencyContent :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 FunctionalDependency where liftEq = genericLiftEq
instance Ord1 FunctionalDependency where liftCompare = genericLiftCompare
instance Show1 FunctionalDependency where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable FunctionalDependency
data TypeClassInstance a = TypeClassInstance { typeClassInstanceContext :: [a], typeClassInstanceIdentifier :: a, typeClassInstanceInstance :: a, typeClassInstanceBody :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 TypeClassInstance where liftEq = genericLiftEq
instance Ord1 TypeClassInstance where liftCompare = genericLiftCompare
instance Show1 TypeClassInstance where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable TypeClassInstance
newtype Instance a = Instance a
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 Instance where liftEq = genericLiftEq
instance Ord1 Instance where liftCompare = genericLiftCompare
instance Show1 Instance where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable Instance
-- e.g. The `Bar{..}` in `foo Bar{..} = baz`.
newtype LabeledPattern a = LabeledPattern a
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 LabeledPattern where liftEq = genericLiftEq
instance Ord1 LabeledPattern where liftCompare = genericLiftCompare
instance Show1 LabeledPattern where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable LabeledPattern
-- e.g. The `{..}` in `foo Bar{..} = baz`
data RecordWildCards a = RecordWildCards
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 RecordWildCards where liftEq = genericLiftEq
instance Ord1 RecordWildCards where liftCompare = genericLiftCompare
instance Show1 RecordWildCards where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable RecordWildCards
-- e.g. `type instance F [Int] = Int` where `F` is an open type family.
data TypeInstance a = TypeInstance { typeInstanceType :: a, typeInstanceBody :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 TypeInstance where liftEq = genericLiftEq
instance Ord1 TypeInstance where liftCompare = genericLiftCompare
instance Show1 TypeInstance where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable TypeInstance
newtype KindParenthesizedConstructor a = KindParenthesizedConstructor { kindParenthesizedConstructorContent :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 KindParenthesizedConstructor where liftEq = genericLiftEq
instance Ord1 KindParenthesizedConstructor where liftCompare = genericLiftCompare
instance Show1 KindParenthesizedConstructor where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable KindParenthesizedConstructor
newtype KindTupleType a = KindTupleType { kindTupleType :: [a] }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 KindTupleType where liftEq = genericLiftEq
instance Ord1 KindTupleType where liftCompare = genericLiftCompare
instance Show1 KindTupleType where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable KindTupleType
data Wildcard a = Wildcard
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 Wildcard where liftEq = genericLiftEq
instance Ord1 Wildcard where liftCompare = genericLiftCompare
instance Show1 Wildcard where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable Wildcard
data Let a = Let { letStatements :: [a], letInClause :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 Let where liftEq = genericLiftEq
instance Ord1 Let where liftCompare = genericLiftCompare
instance Show1 Let where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable Let
newtype ListPattern a = ListPattern a
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 ListPattern where liftEq = genericLiftEq
instance Ord1 ListPattern where liftCompare = genericLiftCompare
instance Show1 ListPattern where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable ListPattern
-- e.g. The `n@num1` in `f n@num1 x@num2 = x`
data AsPattern a = AsPattern { asPatternLeft :: a, asPatternRight :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 AsPattern where liftEq = genericLiftEq
instance Ord1 AsPattern where liftCompare = genericLiftCompare
instance Show1 AsPattern where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable AsPattern
-- e.g. The `a = 1` in `foo Bar{ a = 1 } = baz`.
data FieldPattern a = FieldPattern { fieldPatternLeft :: a, fieldPatternRight :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 FieldPattern where liftEq = genericLiftEq
instance Ord1 FieldPattern where liftCompare = genericLiftCompare
instance Show1 FieldPattern where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable FieldPattern
-- e.g. The `start` or `end` in `f Blob{start, end} = [start, end]`.
newtype NamedFieldPun a = NamedFieldPun a
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 NamedFieldPun where liftEq = genericLiftEq
instance Ord1 NamedFieldPun where liftCompare = genericLiftCompare
instance Show1 NamedFieldPun where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable NamedFieldPun
-- e.g. The `-(1)` in `f (-(1)) = 1`.
newtype NegativeLiteral a = NegativeLiteral a
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 NegativeLiteral where liftEq = genericLiftEq
instance Ord1 NegativeLiteral where liftCompare = genericLiftCompare
instance Show1 NegativeLiteral where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable NegativeLiteral
-- e.g. The `~a` in `f ~a = 1`
newtype IrrefutablePattern a = IrrefutablePattern a
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 IrrefutablePattern where liftEq = genericLiftEq
instance Ord1 IrrefutablePattern where liftCompare = genericLiftCompare
instance Show1 IrrefutablePattern where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable IrrefutablePattern
-- For handling guards in case alternative expressions.
newtype CaseGuardPattern a = CaseGuardPattern [a]
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 CaseGuardPattern where liftEq = genericLiftEq
instance Ord1 CaseGuardPattern where liftCompare = genericLiftCompare
instance Show1 CaseGuardPattern where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable CaseGuardPattern
newtype Guard a = Guard a
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 Guard where liftEq = genericLiftEq
instance Ord1 Guard where liftCompare = genericLiftCompare
instance Show1 Guard where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable Guard
newtype LambdaCase a = LambdaCase [a]
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 LambdaCase where liftEq = genericLiftEq
instance Ord1 LambdaCase where liftCompare = genericLiftCompare
instance Show1 LambdaCase where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable LambdaCase
-- For handling guards in function declarations.
newtype FunctionGuardPattern a = FunctionGuardPattern [a]
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 FunctionGuardPattern where liftEq = genericLiftEq
instance Ord1 FunctionGuardPattern where liftCompare = genericLiftCompare
instance Show1 FunctionGuardPattern where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable FunctionGuardPattern
-- The `y { a = 1, b = 2} in `f y@Example = y { a = 1, b = 2 }`.
newtype LabeledUpdate a = LabeledUpdate [a]
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 LabeledUpdate where liftEq = genericLiftEq
instance Ord1 LabeledUpdate where liftCompare = genericLiftCompare
instance Show1 LabeledUpdate where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable LabeledUpdate
-- The `a = 1` in `f y@Example = y { a = 1, b = 2 }`.
data FieldBind a = FieldBind { fieldBindLeft :: a, fieldBindRight :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 FieldBind where liftEq = genericLiftEq
instance Ord1 FieldBind where liftCompare = genericLiftCompare
instance Show1 FieldBind where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable FieldBind
data ViewPattern a = ViewPattern { viewPatternLeft :: a, viewPatternRight :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 ViewPattern where liftEq = genericLiftEq
instance Ord1 ViewPattern where liftCompare = genericLiftCompare
instance Show1 ViewPattern where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable ViewPattern
-- The `a <- b` in `f a | a <- b = c` of a function declaration.
data PatternGuard a = PatternGuard { patternGuardPattern :: a, patternGuardExpression :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 PatternGuard where liftEq = genericLiftEq
instance Ord1 PatternGuard where liftCompare = genericLiftCompare
instance Show1 PatternGuard where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable PatternGuard
data LabeledConstruction a = LabeledConstruction { labeledConstructionConstructor :: a, labeledConstructionFields :: [a] }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 LabeledConstruction where liftEq = genericLiftEq
instance Ord1 LabeledConstruction where liftCompare = genericLiftCompare
instance Show1 LabeledConstruction where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable LabeledConstruction
data InfixDataConstructor a = InfixDataConstructor { infixDataConstructorContext :: [a], infixDataConstructorLeft :: a, infixDataConstructorOperator :: a, infixDataConstructorRight :: a }
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
instance Eq1 InfixDataConstructor where liftEq = genericLiftEq
instance Ord1 InfixDataConstructor where liftCompare = genericLiftCompare
instance Show1 InfixDataConstructor where liftShowsPrec = genericLiftShowsPrec
instance Evaluatable InfixDataConstructor

View File

@ -300,7 +300,7 @@ comparisonOperator = symbol ComparisonOperator *> children (expression `chainl1T
, (makeTerm1 .) . Expression.Member <$ symbol AnonIn , (makeTerm1 .) . Expression.Member <$ symbol AnonIn
, token AnonIs *> ((makeTerm1 .) . invert Expression.Equal <$ symbol AnonNot <|> pure ((makeTerm1 .) . Expression.Equal)) , token AnonIs *> ((makeTerm1 .) . invert Expression.Equal <$ symbol AnonNot <|> pure ((makeTerm1 .) . Expression.Equal))
]) ])
where invert cons a b = Expression.Not (makeTerm1 (cons a b)) where invert cons a b = Expression.Not (makeTerm1 (cons a b))
notOperator :: Assignment notOperator :: Assignment
notOperator = makeTerm <$> symbol NotOperator <*> children (Expression.Not <$> term expression) notOperator = makeTerm <$> symbol NotOperator <*> children (Expression.Not <$> term expression)

View File

@ -126,7 +126,7 @@ someParser :: ( ApplyAll typeclasses (Sum Go.Syntax)
, ApplyAll typeclasses (Sum TypeScript.Syntax) , ApplyAll typeclasses (Sum TypeScript.Syntax)
, ApplyAll typeclasses (Sum PHP.Syntax) , ApplyAll typeclasses (Sum PHP.Syntax)
) )
=> Language   -- ^ The 'Language' to select. => Language -- ^ The 'Language' to select.
-> Maybe (Parser (SomeTerm typeclasses (Record Location))) -- ^ A 'SomeParser' abstracting the syntax type to be produced. -> Maybe (Parser (SomeTerm typeclasses (Record Location))) -- ^ A 'SomeParser' abstracting the syntax type to be produced.
someParser Go = Just (SomeParser goParser) someParser Go = Just (SomeParser goParser)
someParser Java = Just (SomeParser javaParser) someParser Java = Just (SomeParser javaParser)

View File

@ -18,7 +18,7 @@ import Semantic.Task
import Serializing.Format import Serializing.Format
import qualified Language.Ruby.Assignment as Ruby import qualified Language.Ruby.Assignment as Ruby
runParse :: (Member (Distribute WrappedTask) effs, Member Task effs) => TermRenderer output -> [Blob] -> Eff effs Builder runParse :: (Member (Distribute WrappedTask) effs, Member Task effs) => TermRenderer output -> [Blob] -> Eff effs Builder
runParse JSONTermRenderer = withParsedBlobs (render . renderJSONTerm) >=> serialize JSON runParse JSONTermRenderer = withParsedBlobs (render . renderJSONTerm) >=> serialize JSON
runParse SExpressionTermRenderer = withParsedBlobs (const (serialize (SExpression ByConstructorName))) runParse SExpressionTermRenderer = withParsedBlobs (const (serialize (SExpression ByConstructorName)))
runParse ShowTermRenderer = withParsedBlobs (const (serialize Show)) runParse ShowTermRenderer = withParsedBlobs (const (serialize Show))

View File

@ -68,6 +68,12 @@
{+(Constructor {+(Constructor
{+(ConstructorIdentifier)+} {+(ConstructorIdentifier)+}
{+(TypeParameters)+})+} {+(TypeParameters)+})+}
{+(Constructor
{+(ConstructorIdentifier)+}
{+(TypeParameters)+})+}
{+(Constructor
{+(ConstructorIdentifier)+}
{+(TypeParameters)+})+}
{+(Constructor {+(Constructor
{+(ConstructorIdentifier)+} {+(ConstructorIdentifier)+}
{+(TypeParameters)+})+} {+(TypeParameters)+})+}
@ -75,12 +81,6 @@
{ (ConstructorIdentifier) { (ConstructorIdentifier)
->(ConstructorIdentifier) } ->(ConstructorIdentifier) }
(TypeParameters)) (TypeParameters))
{+(Constructor
{+(ConstructorIdentifier)+}
{+(TypeParameters)+})+}
{+(Constructor
{+(ConstructorIdentifier)+}
{+(TypeParameters)+})+}
{-(Constructor {-(Constructor
{-(ConstructorIdentifier)-} {-(ConstructorIdentifier)-}
{-(TypeParameters)-})-} {-(TypeParameters)-})-}

View File

@ -0,0 +1,3 @@
#ifndef mingw32_HOST_OS
import System.Posix.Signals
#endif

View File

@ -0,0 +1,3 @@
#ifndef mingw64_HOST_OS
import System.Util.Posix.Signals
#endif

View File

@ -0,0 +1,13 @@
(Module
(Empty)
(Statements
{ (CPPDirective)
->(CPPDirective) }
(ImportDeclaration
(Empty)
(QualifiedModuleIdentifier
(ModuleIdentifier)
{+(ModuleIdentifier)+}
(ModuleIdentifier)
(ModuleIdentifier)))
(CPPDirective)))

View File

@ -0,0 +1,13 @@
(Module
(Empty)
(Statements
{ (CPPDirective)
->(CPPDirective) }
(ImportDeclaration
(Empty)
(QualifiedModuleIdentifier
(ModuleIdentifier)
{-(ModuleIdentifier)-}
(ModuleIdentifier)
(ModuleIdentifier)))
(CPPDirective)))

View File

@ -0,0 +1,11 @@
(Module
(Empty)
(Statements
(CPPDirective)
(ImportDeclaration
(Empty)
(QualifiedModuleIdentifier
(ModuleIdentifier)
(ModuleIdentifier)
(ModuleIdentifier)))
(CPPDirective)))

View File

@ -0,0 +1,12 @@
(Module
(Empty)
(Statements
(CPPDirective)
(ImportDeclaration
(Empty)
(QualifiedModuleIdentifier
(ModuleIdentifier)
(ModuleIdentifier)
(ModuleIdentifier)
(ModuleIdentifier)))
(CPPDirective)))

View File

@ -7,6 +7,7 @@
(Statements (Statements
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
{ (VariableIdentifier) { (VariableIdentifier)
@ -15,7 +16,9 @@
(App (App
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
{ (VariableIdentifier) { (VariableIdentifier)
@ -25,8 +28,11 @@
(App (App
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
{ (VariableIdentifier) { (VariableIdentifier)
@ -34,6 +40,7 @@
(Statements (Statements
(App (App
(ConstructorIdentifier) (ConstructorIdentifier)
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
{ (VariableIdentifier) { (VariableIdentifier)
@ -41,6 +48,7 @@
(Statements (Statements
(App (App
(ConstructorIdentifier) (ConstructorIdentifier)
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
{ (VariableIdentifier) { (VariableIdentifier)
@ -50,8 +58,11 @@
(App (App
(App (App
(ConstructorIdentifier) (ConstructorIdentifier)
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
{ (VariableIdentifier) { (VariableIdentifier)
@ -61,13 +72,13 @@
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(EnumFrom (ArithmeticSequence
{ (Integer) { (Integer)
->(Integer) }))) ->(Integer) })))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(EnumFromThen (ArithmeticSequence
{ (Integer) { (Integer)
->(Integer) } ->(Integer) }
{ (Integer) { (Integer)
@ -75,7 +86,7 @@
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(EnumFromTo (ArithmeticSequence
{ (Integer) { (Integer)
->(Integer) } ->(Integer) }
{ (Integer) { (Integer)
@ -83,7 +94,7 @@
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(EnumFromThenTo (ArithmeticSequence
{ (Integer) { (Integer)
->(Integer) } ->(Integer) }
{ (Integer) { (Integer)
@ -167,7 +178,7 @@
{+(Integer)+})) {+(Integer)+}))
(Generator (Generator
(VariableIdentifier) (VariableIdentifier)
(EnumFromTo (ArithmeticSequence
(Integer) (Integer)
{ (Integer) { (Integer)
->(Integer) }))))) ->(Integer) })))))
@ -188,7 +199,7 @@
{+(Integer)+}))) {+(Integer)+})))
(Generator (Generator
(VariableIdentifier) (VariableIdentifier)
(EnumFrom (ArithmeticSequence
{ (Integer) { (Integer)
->(Integer) }))))) ->(Integer) })))))
(Function (Function
@ -198,8 +209,10 @@
(App (App
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
{ (Integer) { (Integer)
->(Integer) }) ->(Integer) })
(Empty)
(ListComprehension (ListComprehension
(ListComprehension (ListComprehension
(Tuple (Tuple
@ -212,7 +225,7 @@
(Integer)))) (Integer))))
(Generator (Generator
(VariableIdentifier) (VariableIdentifier)
(EnumFrom (ArithmeticSequence
(Integer))))))) (Integer)))))))
(Function (Function
{ (VariableIdentifier) { (VariableIdentifier)
@ -230,40 +243,64 @@
(ConstructorOperator (ConstructorOperator
(ConstructorSymbol)) (ConstructorSymbol))
(VariableIdentifier)))) (VariableIdentifier))))
(Function {+(Function
{ (VariableIdentifier) {+(VariableIdentifier)+}
->(VariableIdentifier) } {+(Statements
(Statements {+(LeftOperatorSection
(LeftOperatorSection {+(VariableIdentifier)+}
{ (VariableIdentifier) {+(ConstructorOperator
->(VariableIdentifier) } {+(ConstructorSymbol)+})+})+})+})+}
(ConstructorOperator {+(Function
(ConstructorSymbol))))) {+(VariableIdentifier)+}
(Function {+(Statements
{ (VariableIdentifier) {+(LeftOperatorSection
->(VariableIdentifier) } {+(VariableIdentifier)+}
(Statements {+(ConstructorOperator
(LeftOperatorSection {+(ConstructorSymbol)+})+})+})+})+}
{ (VariableIdentifier) {+(Function
->(VariableIdentifier) } {+(VariableIdentifier)+}
(ConstructorOperator {+(Statements
(ConstructorSymbol))))) {+(InfixOperatorApp
(Function {+(VariableIdentifier)+}
{ (VariableIdentifier) {+(Empty)+}
->(VariableIdentifier) } {+(VariableOperator
(Statements {+(InfixVariableIdentifier)+})+}
(InfixOperatorApp {+(VariableIdentifier)+})+})+})+}
(VariableIdentifier) {+(Function
(VariableOperator {+(VariableIdentifier)+}
(InfixVariableIdentifier)) {+(Statements
(VariableIdentifier)))) {+(QualifiedConstructorIdentifier
(Function {+(ModuleIdentifier)+}
{ (VariableIdentifier) {+(ConstructorIdentifier)+})+})+})+}
->(VariableIdentifier) } {-(Function
(Statements {-(VariableIdentifier)-}
(QualifiedConstructorIdentifier {-(Statements
(ModuleIdentifier) {-(LeftOperatorSection
(ConstructorIdentifier)))) {-(VariableIdentifier)-}
{-(ConstructorOperator
{-(ConstructorSymbol)-})-})-})-})-}
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(LeftOperatorSection
{-(VariableIdentifier)-}
{-(ConstructorOperator
{-(ConstructorSymbol)-})-})-})-})-}
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(InfixOperatorApp
{-(VariableIdentifier)-}
{-(Empty)-}
{-(VariableOperator
{-(InfixVariableIdentifier)-})-}
{-(VariableIdentifier)-})-})-})-}
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(QualifiedConstructorIdentifier
{-(ModuleIdentifier)-}
{-(ConstructorIdentifier)-})-})-})-}
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(ConstructorPattern (ConstructorPattern
@ -276,38 +313,46 @@
(Statements (Statements
(InfixOperatorApp (InfixOperatorApp
(ConstructorIdentifier) (ConstructorIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
{ (VariableIdentifier) { (VariableIdentifier)
->(VariableIdentifier) } ->(VariableIdentifier) }
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(TextElement) (TextElement)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
{ (VariableIdentifier) { (VariableIdentifier)
->(VariableIdentifier) } ->(VariableIdentifier) }
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(TextElement) (TextElement)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
{ (VariableIdentifier) { (VariableIdentifier)
->(VariableIdentifier) } ->(VariableIdentifier) }
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(TextElement) (TextElement)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
{ (VariableIdentifier) { (VariableIdentifier)
->(VariableIdentifier) } ->(VariableIdentifier) }
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(TextElement))))))))))) (TextElement)))))))))))
@ -322,6 +367,7 @@
(InfixOperatorApp (InfixOperatorApp
{ (VariableIdentifier) { (VariableIdentifier)
->(VariableIdentifier) } ->(VariableIdentifier) }
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
{ (VariableIdentifier) { (VariableIdentifier)
@ -332,6 +378,7 @@
(InfixOperatorApp (InfixOperatorApp
{ (VariableIdentifier) { (VariableIdentifier)
->(VariableIdentifier) } ->(VariableIdentifier) }
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
{ (VariableIdentifier) { (VariableIdentifier)
@ -361,10 +408,12 @@
(VariableIdentifier) (VariableIdentifier)
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(ConstructorOperator (ConstructorOperator
(ConstructorSymbol)) (ConstructorSymbol))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(ConstructorOperator (ConstructorOperator
(ConstructorSymbol)) (ConstructorSymbol))
(VariableIdentifier)))))) (VariableIdentifier))))))
@ -379,10 +428,12 @@
(VariableIdentifier)) (VariableIdentifier))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(VariableIdentifier)))))) (VariableIdentifier))))))
@ -398,82 +449,61 @@
(Statements (Statements
(InfixOperatorApp (InfixOperatorApp
(Integer) (Integer)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(Integer)))) (Integer))))
{+(Function
{+(VariableIdentifier)+}
{+(Statements
{+(PrefixNegation
{+(Integer)+})+})+})+}
{+(Function
{+(VariableIdentifier)+}
{+(Statements
{+(PrefixNegation
{+(VariableIdentifier)+})+})+})+}
(Function (Function
{ (VariableIdentifier) { (VariableIdentifier)
->(VariableIdentifier) } ->(VariableIdentifier) }
(Statements (Statements
(PrefixNegation (PrefixNegation
(Integer)))) (Integer))))
{+(Function (Function
{+(VariableIdentifier)+} { (VariableIdentifier)
{+(Statements ->(VariableIdentifier) }
{+(InfixOperatorApp (Statements
{+(VariableIdentifier)+} (PrefixNegation
{+(VariableOperator (VariableIdentifier))))
{+(VariableSymbol)+})+} (Function
{+(App { (VariableIdentifier)
{+(App ->(VariableIdentifier) }
{+(VariableIdentifier)+} (Statements
{+(Lambda (PrefixNegation
{+(VariableIdentifier)+} (Integer))))
{+(InfixOperatorApp (Function
{+(Tuple { (VariableIdentifier)
{+(VariableIdentifier)+})+} ->(VariableIdentifier) }
{+(VariableOperator (Statements
{+(VariableSymbol)+})+} (InfixOperatorApp
{+(InfixOperatorApp (VariableIdentifier)
{+(ConstructorIdentifier)+} (Empty)
{+(VariableOperator (VariableOperator
{+(VariableSymbol)+})+} (VariableSymbol))
{+(App (App
{+(VariableIdentifier)+} (App
{+(VariableIdentifier)+})+})+})+})+})+} (VariableIdentifier)
{+(VariableIdentifier)+})+})+})+})+} (Empty)
{-(Function (Lambda
{-(VariableIdentifier)-} { (VariableIdentifier)
{-(Statements ->(VariableIdentifier) }
{-(PrefixNegation (InfixOperatorApp
{-(VariableIdentifier)-})-})-})-} (Tuple
{-(Function { (VariableIdentifier)
{-(VariableIdentifier)-} ->(VariableIdentifier) })
{-(Statements (Empty)
{-(PrefixNegation (VariableOperator
{-(Integer)-})-})-})-} (VariableSymbol))
{-(Function (InfixOperatorApp
{-(VariableIdentifier)-} (ConstructorIdentifier)
{-(Statements (Empty)
{-(InfixOperatorApp (VariableOperator
{-(VariableIdentifier)-} (VariableSymbol))
{-(VariableOperator (App
{-(VariableSymbol)-})-} { (VariableIdentifier)
{-(App ->(VariableIdentifier) }
{-(App (Empty)
{-(VariableIdentifier)-} { (VariableIdentifier)
{-(Lambda ->(VariableIdentifier) })))))
{-(VariableIdentifier)-} (Empty)
{-(InfixOperatorApp (VariableIdentifier)))))))
{-(Tuple
{-(VariableIdentifier)-})-}
{-(VariableOperator
{-(VariableSymbol)-})-}
{-(InfixOperatorApp
{-(ConstructorIdentifier)-}
{-(VariableOperator
{-(VariableSymbol)-})-}
{-(App
{-(VariableIdentifier)-}
{-(VariableIdentifier)-})-})-})-})-})-}
{-(VariableIdentifier)-})-})-})-})-}))

View File

@ -7,6 +7,7 @@
(Statements (Statements
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
{ (VariableIdentifier) { (VariableIdentifier)
@ -15,7 +16,9 @@
(App (App
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
{ (VariableIdentifier) { (VariableIdentifier)
@ -25,8 +28,11 @@
(App (App
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
{ (VariableIdentifier) { (VariableIdentifier)
@ -34,6 +40,7 @@
(Statements (Statements
(App (App
(ConstructorIdentifier) (ConstructorIdentifier)
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
{ (VariableIdentifier) { (VariableIdentifier)
@ -41,6 +48,7 @@
(Statements (Statements
(App (App
(ConstructorIdentifier) (ConstructorIdentifier)
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
{ (VariableIdentifier) { (VariableIdentifier)
@ -50,8 +58,11 @@
(App (App
(App (App
(ConstructorIdentifier) (ConstructorIdentifier)
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
{ (VariableIdentifier) { (VariableIdentifier)
@ -61,13 +72,13 @@
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(EnumFrom (ArithmeticSequence
{ (Integer) { (Integer)
->(Integer) }))) ->(Integer) })))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(EnumFromThen (ArithmeticSequence
{ (Integer) { (Integer)
->(Integer) } ->(Integer) }
{ (Integer) { (Integer)
@ -75,7 +86,7 @@
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(EnumFromTo (ArithmeticSequence
{ (Integer) { (Integer)
->(Integer) } ->(Integer) }
{ (Integer) { (Integer)
@ -83,7 +94,7 @@
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(EnumFromThenTo (ArithmeticSequence
{ (Integer) { (Integer)
->(Integer) } ->(Integer) }
{ (Integer) { (Integer)
@ -167,7 +178,7 @@
{-(Integer)-})) {-(Integer)-}))
(Generator (Generator
(VariableIdentifier) (VariableIdentifier)
(EnumFromTo (ArithmeticSequence
(Integer) (Integer)
{ (Integer) { (Integer)
->(Integer) }))))) ->(Integer) })))))
@ -188,7 +199,7 @@
{-(Integer)-}))) {-(Integer)-})))
(Generator (Generator
(VariableIdentifier) (VariableIdentifier)
(EnumFrom (ArithmeticSequence
{ (Integer) { (Integer)
->(Integer) }))))) ->(Integer) })))))
(Function (Function
@ -198,8 +209,10 @@
(App (App
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
{ (Integer) { (Integer)
->(Integer) }) ->(Integer) })
(Empty)
(ListComprehension (ListComprehension
(ListComprehension (ListComprehension
(Tuple (Tuple
@ -212,7 +225,7 @@
(Integer)))) (Integer))))
(Generator (Generator
(VariableIdentifier) (VariableIdentifier)
(EnumFrom (ArithmeticSequence
(Integer))))))) (Integer)))))))
(Function (Function
{ (VariableIdentifier) { (VariableIdentifier)
@ -230,29 +243,40 @@
(ConstructorOperator (ConstructorOperator
(ConstructorSymbol)) (ConstructorSymbol))
(VariableIdentifier)))) (VariableIdentifier))))
(Function {+(Function
{ (VariableIdentifier) {+(VariableIdentifier)+}
->(VariableIdentifier) } {+(Statements
(Statements {+(LeftOperatorSection
(LeftOperatorSection {+(VariableIdentifier)+}
{ (VariableIdentifier) {+(ConstructorOperator
->(VariableIdentifier) } {+(ConstructorSymbol)+})+})+})+})+}
(ConstructorOperator {+(Function
(ConstructorSymbol))))) {+(VariableIdentifier)+}
(Function {+(Statements
{ (VariableIdentifier) {+(LeftOperatorSection
->(VariableIdentifier) } {+(VariableIdentifier)+}
(Statements {+(ConstructorOperator
(LeftOperatorSection {+(ConstructorSymbol)+})+})+})+})+}
{ (VariableIdentifier) {-(Function
->(VariableIdentifier) } {-(VariableIdentifier)-}
(ConstructorOperator {-(Statements
(ConstructorSymbol))))) {-(LeftOperatorSection
{-(VariableIdentifier)-}
{-(ConstructorOperator
{-(ConstructorSymbol)-})-})-})-})-}
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(LeftOperatorSection
{-(VariableIdentifier)-}
{-(ConstructorOperator
{-(ConstructorSymbol)-})-})-})-})-}
{-(Function {-(Function
{-(VariableIdentifier)-} {-(VariableIdentifier)-}
{-(Statements {-(Statements
{-(InfixOperatorApp {-(InfixOperatorApp
{-(VariableIdentifier)-} {-(VariableIdentifier)-}
{-(Empty)-}
{-(VariableOperator {-(VariableOperator
{-(InfixVariableIdentifier)-})-} {-(InfixVariableIdentifier)-})-}
{-(VariableIdentifier)-})-})-})-} {-(VariableIdentifier)-})-})-})-}
@ -273,34 +297,42 @@
{-(Statements {-(Statements
{-(InfixOperatorApp {-(InfixOperatorApp
{-(ConstructorIdentifier)-} {-(ConstructorIdentifier)-}
{-(Empty)-}
{-(VariableOperator {-(VariableOperator
{-(VariableSymbol)-})-} {-(VariableSymbol)-})-}
{-(InfixOperatorApp {-(InfixOperatorApp
{-(VariableIdentifier)-} {-(VariableIdentifier)-}
{-(Empty)-}
{-(VariableOperator {-(VariableOperator
{-(VariableSymbol)-})-} {-(VariableSymbol)-})-}
{-(InfixOperatorApp {-(InfixOperatorApp
{-(TextElement)-} {-(TextElement)-}
{-(Empty)-}
{-(VariableOperator {-(VariableOperator
{-(VariableSymbol)-})-} {-(VariableSymbol)-})-}
{-(InfixOperatorApp {-(InfixOperatorApp
{-(VariableIdentifier)-} {-(VariableIdentifier)-}
{-(Empty)-}
{-(VariableOperator {-(VariableOperator
{-(VariableSymbol)-})-} {-(VariableSymbol)-})-}
{-(InfixOperatorApp {-(InfixOperatorApp
{-(TextElement)-} {-(TextElement)-}
{-(Empty)-}
{-(VariableOperator {-(VariableOperator
{-(VariableSymbol)-})-} {-(VariableSymbol)-})-}
{-(InfixOperatorApp {-(InfixOperatorApp
{-(VariableIdentifier)-} {-(VariableIdentifier)-}
{-(Empty)-}
{-(VariableOperator {-(VariableOperator
{-(VariableSymbol)-})-} {-(VariableSymbol)-})-}
{-(InfixOperatorApp {-(InfixOperatorApp
{-(TextElement)-} {-(TextElement)-}
{-(Empty)-}
{-(VariableOperator {-(VariableOperator
{-(VariableSymbol)-})-} {-(VariableSymbol)-})-}
{-(InfixOperatorApp {-(InfixOperatorApp
{-(VariableIdentifier)-} {-(VariableIdentifier)-}
{-(Empty)-}
{-(VariableOperator {-(VariableOperator
{-(VariableSymbol)-})-} {-(VariableSymbol)-})-}
{-(TextElement)-})-})-})-})-})-})-})-})-})-})-} {-(TextElement)-})-})-})-})-})-})-})-})-})-})-}
@ -309,6 +341,7 @@
(Statements (Statements
{+(InfixOperatorApp {+(InfixOperatorApp
{+(VariableIdentifier)+} {+(VariableIdentifier)+}
{+(Empty)+}
{+(VariableOperator {+(VariableOperator
{+(InfixVariableIdentifier)+})+} {+(InfixVariableIdentifier)+})+}
{+(VariableIdentifier)+})+} {+(VariableIdentifier)+})+}
@ -317,6 +350,7 @@
{-(VariableIdentifier)-} {-(VariableIdentifier)-}
{-(InfixOperatorApp {-(InfixOperatorApp
{-(VariableIdentifier)-} {-(VariableIdentifier)-}
{-(Empty)-}
{-(VariableOperator {-(VariableOperator
{-(VariableSymbol)-})-} {-(VariableSymbol)-})-}
{-(VariableIdentifier)-})-})-} {-(VariableIdentifier)-})-})-}
@ -324,6 +358,7 @@
{-(VariableIdentifier)-} {-(VariableIdentifier)-}
{-(InfixOperatorApp {-(InfixOperatorApp
{-(VariableIdentifier)-} {-(VariableIdentifier)-}
{-(Empty)-}
{-(VariableOperator {-(VariableOperator
{-(VariableSymbol)-})-} {-(VariableSymbol)-})-}
{-(VariableIdentifier)-})-})-})-})) {-(VariableIdentifier)-})-})-})-}))
@ -344,34 +379,42 @@
{+(Statements {+(Statements
{+(InfixOperatorApp {+(InfixOperatorApp
{+(ConstructorIdentifier)+} {+(ConstructorIdentifier)+}
{+(Empty)+}
{+(VariableOperator {+(VariableOperator
{+(VariableSymbol)+})+} {+(VariableSymbol)+})+}
{+(InfixOperatorApp {+(InfixOperatorApp
{+(VariableIdentifier)+} {+(VariableIdentifier)+}
{+(Empty)+}
{+(VariableOperator {+(VariableOperator
{+(VariableSymbol)+})+} {+(VariableSymbol)+})+}
{+(InfixOperatorApp {+(InfixOperatorApp
{+(TextElement)+} {+(TextElement)+}
{+(Empty)+}
{+(VariableOperator {+(VariableOperator
{+(VariableSymbol)+})+} {+(VariableSymbol)+})+}
{+(InfixOperatorApp {+(InfixOperatorApp
{+(VariableIdentifier)+} {+(VariableIdentifier)+}
{+(Empty)+}
{+(VariableOperator {+(VariableOperator
{+(VariableSymbol)+})+} {+(VariableSymbol)+})+}
{+(InfixOperatorApp {+(InfixOperatorApp
{+(TextElement)+} {+(TextElement)+}
{+(Empty)+}
{+(VariableOperator {+(VariableOperator
{+(VariableSymbol)+})+} {+(VariableSymbol)+})+}
{+(InfixOperatorApp {+(InfixOperatorApp
{+(VariableIdentifier)+} {+(VariableIdentifier)+}
{+(Empty)+}
{+(VariableOperator {+(VariableOperator
{+(VariableSymbol)+})+} {+(VariableSymbol)+})+}
{+(InfixOperatorApp {+(InfixOperatorApp
{+(TextElement)+} {+(TextElement)+}
{+(Empty)+}
{+(VariableOperator {+(VariableOperator
{+(VariableSymbol)+})+} {+(VariableSymbol)+})+}
{+(InfixOperatorApp {+(InfixOperatorApp
{+(VariableIdentifier)+} {+(VariableIdentifier)+}
{+(Empty)+}
{+(VariableOperator {+(VariableOperator
{+(VariableSymbol)+})+} {+(VariableSymbol)+})+}
{+(TextElement)+})+})+})+})+})+})+})+})+})+})+} {+(TextElement)+})+})+})+})+})+})+})+})+})+})+}
@ -383,6 +426,7 @@
{+(VariableIdentifier)+} {+(VariableIdentifier)+}
{+(InfixOperatorApp {+(InfixOperatorApp
{+(VariableIdentifier)+} {+(VariableIdentifier)+}
{+(Empty)+}
{+(VariableOperator {+(VariableOperator
{+(VariableSymbol)+})+} {+(VariableSymbol)+})+}
{+(VariableIdentifier)+})+})+} {+(VariableIdentifier)+})+})+}
@ -390,6 +434,7 @@
{+(VariableIdentifier)+} {+(VariableIdentifier)+}
{+(InfixOperatorApp {+(InfixOperatorApp
{+(VariableIdentifier)+} {+(VariableIdentifier)+}
{+(Empty)+}
{+(VariableOperator {+(VariableOperator
{+(VariableSymbol)+})+} {+(VariableSymbol)+})+}
{+(VariableIdentifier)+})+})+})+})+})+} {+(VariableIdentifier)+})+})+})+})+})+}
@ -418,10 +463,12 @@
(VariableIdentifier) (VariableIdentifier)
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(ConstructorOperator (ConstructorOperator
(ConstructorSymbol)) (ConstructorSymbol))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(ConstructorOperator (ConstructorOperator
(ConstructorSymbol)) (ConstructorSymbol))
(VariableIdentifier)))))) (VariableIdentifier))))))
@ -436,10 +483,12 @@
(VariableIdentifier)) (VariableIdentifier))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(VariableIdentifier)))))) (VariableIdentifier))))))
@ -455,86 +504,61 @@
(Statements (Statements
(InfixOperatorApp (InfixOperatorApp
(Integer) (Integer)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(Integer)))) (Integer))))
{+(Function (Function
{+(VariableIdentifier)+} { (VariableIdentifier)
{+(Statements ->(VariableIdentifier) }
{+(PrefixNegation (Statements
{+(Integer)+})+})+})+} (PrefixNegation
{+(Function (Integer))))
{+(VariableIdentifier)+} (Function
{+(Statements { (VariableIdentifier)
{+(PrefixNegation ->(VariableIdentifier) }
{+(VariableIdentifier)+})+})+})+} (Statements
{+(Function (PrefixNegation
{+(VariableIdentifier)+} (VariableIdentifier))))
{+(Statements (Function
{+(PrefixNegation { (VariableIdentifier)
{+(Integer)+})+})+})+} ->(VariableIdentifier) }
{+(Function (Statements
{+(VariableIdentifier)+} (PrefixNegation
{+(Statements (Integer))))
{+(InfixOperatorApp (Function
{+(VariableIdentifier)+} { (VariableIdentifier)
{+(VariableOperator ->(VariableIdentifier) }
{+(VariableSymbol)+})+} (Statements
{+(App (InfixOperatorApp
{+(App (VariableIdentifier)
{+(VariableIdentifier)+} (Empty)
{+(Lambda (VariableOperator
{+(VariableIdentifier)+} (VariableSymbol))
{+(InfixOperatorApp (App
{+(Tuple (App
{+(VariableIdentifier)+})+} (VariableIdentifier)
{+(VariableOperator (Empty)
{+(VariableSymbol)+})+} (Lambda
{+(InfixOperatorApp { (VariableIdentifier)
{+(ConstructorIdentifier)+} ->(VariableIdentifier) }
{+(VariableOperator (InfixOperatorApp
{+(VariableSymbol)+})+} (Tuple
{+(App { (VariableIdentifier)
{+(VariableIdentifier)+} ->(VariableIdentifier) })
{+(VariableIdentifier)+})+})+})+})+})+} (Empty)
{+(VariableIdentifier)+})+})+})+})+} (VariableOperator
{-(Function (VariableSymbol))
{-(VariableIdentifier)-} (InfixOperatorApp
{-(Statements (ConstructorIdentifier)
{-(PrefixNegation (Empty)
{-(Integer)-})-})-})-} (VariableOperator
{-(Function (VariableSymbol))
{-(VariableIdentifier)-} (App
{-(Statements { (VariableIdentifier)
{-(PrefixNegation ->(VariableIdentifier) }
{-(VariableIdentifier)-})-})-})-} (Empty)
{-(Function { (VariableIdentifier)
{-(VariableIdentifier)-} ->(VariableIdentifier) })))))
{-(Statements (Empty)
{-(PrefixNegation (VariableIdentifier)))))))
{-(Integer)-})-})-})-}
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(InfixOperatorApp
{-(VariableIdentifier)-}
{-(VariableOperator
{-(VariableSymbol)-})-}
{-(App
{-(App
{-(VariableIdentifier)-}
{-(Lambda
{-(VariableIdentifier)-}
{-(InfixOperatorApp
{-(Tuple
{-(VariableIdentifier)-})-}
{-(VariableOperator
{-(VariableSymbol)-})-}
{-(InfixOperatorApp
{-(ConstructorIdentifier)-}
{-(VariableOperator
{-(VariableSymbol)-})-}
{-(App
{-(VariableIdentifier)-}
{-(VariableIdentifier)-})-})-})-})-})-}
{-(VariableIdentifier)-})-})-})-})-}))

View File

@ -6,6 +6,7 @@
(Statements (Statements
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
@ -13,7 +14,9 @@
(App (App
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
@ -22,20 +25,25 @@
(App (App
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(App (App
(ConstructorIdentifier) (ConstructorIdentifier)
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(App (App
(ConstructorIdentifier) (ConstructorIdentifier)
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
@ -44,8 +52,11 @@
(App (App
(App (App
(ConstructorIdentifier) (ConstructorIdentifier)
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
@ -54,24 +65,24 @@
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(EnumFrom (ArithmeticSequence
(Integer)))) (Integer))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(EnumFromThen (ArithmeticSequence
(Integer) (Integer)
(Integer)))) (Integer))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(EnumFromTo (ArithmeticSequence
(Integer) (Integer)
(Integer)))) (Integer))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(EnumFromThenTo (ArithmeticSequence
(Integer) (Integer)
(Integer) (Integer)
(Integer)))) (Integer))))
@ -137,7 +148,7 @@
(Integer))) (Integer)))
(Generator (Generator
(VariableIdentifier) (VariableIdentifier)
(EnumFromTo (ArithmeticSequence
(Integer) (Integer)
(Integer)))))) (Integer))))))
(Function (Function
@ -155,7 +166,7 @@
(Integer)))) (Integer))))
(Generator (Generator
(VariableIdentifier) (VariableIdentifier)
(EnumFrom (ArithmeticSequence
(Integer)))))) (Integer))))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
@ -163,7 +174,9 @@
(App (App
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
(Integer)) (Integer))
(Empty)
(ListComprehension (ListComprehension
(ListComprehension (ListComprehension
(Tuple (Tuple
@ -176,7 +189,7 @@
(Integer)))) (Integer))))
(Generator (Generator
(VariableIdentifier) (VariableIdentifier)
(EnumFrom (ArithmeticSequence
(Integer))))))) (Integer)))))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
@ -211,6 +224,7 @@
(Statements (Statements
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(InfixVariableIdentifier)) (InfixVariableIdentifier))
(VariableIdentifier)))) (VariableIdentifier))))
@ -231,34 +245,42 @@
(Statements (Statements
(InfixOperatorApp (InfixOperatorApp
(ConstructorIdentifier) (ConstructorIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(TextElement) (TextElement)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(TextElement) (TextElement)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(TextElement) (TextElement)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(TextElement))))))))))) (TextElement)))))))))))
@ -270,6 +292,7 @@
(VariableIdentifier) (VariableIdentifier)
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(VariableIdentifier))) (VariableIdentifier)))
@ -277,6 +300,7 @@
(VariableIdentifier) (VariableIdentifier)
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(VariableIdentifier)))))) (VariableIdentifier))))))
@ -302,10 +326,12 @@
(VariableIdentifier) (VariableIdentifier)
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(ConstructorOperator (ConstructorOperator
(ConstructorSymbol)) (ConstructorSymbol))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(ConstructorOperator (ConstructorOperator
(ConstructorSymbol)) (ConstructorSymbol))
(VariableIdentifier)))))) (VariableIdentifier))))))
@ -319,10 +345,12 @@
(VariableIdentifier)) (VariableIdentifier))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(VariableIdentifier)))))) (VariableIdentifier))))))
@ -336,6 +364,7 @@
(Statements (Statements
(InfixOperatorApp (InfixOperatorApp
(Integer) (Integer)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(Integer)))) (Integer))))
@ -359,23 +388,29 @@
(Statements (Statements
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(App (App
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
(Lambda (Lambda
(VariableIdentifier) (VariableIdentifier)
(InfixOperatorApp (InfixOperatorApp
(Tuple (Tuple
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(ConstructorIdentifier) (ConstructorIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableIdentifier)))))) (VariableIdentifier))))))
(Empty)
(VariableIdentifier))))))) (VariableIdentifier)))))))

View File

@ -6,6 +6,7 @@
(Statements (Statements
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
@ -13,7 +14,9 @@
(App (App
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
@ -22,20 +25,25 @@
(App (App
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(App (App
(ConstructorIdentifier) (ConstructorIdentifier)
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(App (App
(ConstructorIdentifier) (ConstructorIdentifier)
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
@ -44,8 +52,11 @@
(App (App
(App (App
(ConstructorIdentifier) (ConstructorIdentifier)
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableIdentifier)))) (VariableIdentifier))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
@ -54,24 +65,24 @@
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(EnumFrom (ArithmeticSequence
(Integer)))) (Integer))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(EnumFromThen (ArithmeticSequence
(Integer) (Integer)
(Integer)))) (Integer))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(EnumFromTo (ArithmeticSequence
(Integer) (Integer)
(Integer)))) (Integer))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
(Statements (Statements
(EnumFromThenTo (ArithmeticSequence
(Integer) (Integer)
(Integer) (Integer)
(Integer)))) (Integer))))
@ -139,7 +150,7 @@
(Integer))) (Integer)))
(Generator (Generator
(VariableIdentifier) (VariableIdentifier)
(EnumFromTo (ArithmeticSequence
(Integer) (Integer)
(Integer)))))) (Integer))))))
(Function (Function
@ -157,7 +168,7 @@
(Integer)))) (Integer))))
(Generator (Generator
(VariableIdentifier) (VariableIdentifier)
(EnumFrom (ArithmeticSequence
(Integer)))))) (Integer))))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
@ -165,7 +176,9 @@
(App (App
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
(Integer)) (Integer))
(Empty)
(ListComprehension (ListComprehension
(ListComprehension (ListComprehension
(Tuple (Tuple
@ -178,7 +191,7 @@
(Integer)))) (Integer))))
(Generator (Generator
(VariableIdentifier) (VariableIdentifier)
(EnumFrom (ArithmeticSequence
(Integer))))))) (Integer)))))))
(Function (Function
(VariableIdentifier) (VariableIdentifier)
@ -213,6 +226,7 @@
(Statements (Statements
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(InfixVariableIdentifier)) (InfixVariableIdentifier))
(VariableIdentifier)))) (VariableIdentifier))))
@ -233,34 +247,42 @@
(Statements (Statements
(InfixOperatorApp (InfixOperatorApp
(ConstructorIdentifier) (ConstructorIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(TextElement) (TextElement)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(TextElement) (TextElement)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(TextElement) (TextElement)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(TextElement))))))))))) (TextElement)))))))))))
@ -272,6 +294,7 @@
(VariableIdentifier) (VariableIdentifier)
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(VariableIdentifier))) (VariableIdentifier)))
@ -279,6 +302,7 @@
(VariableIdentifier) (VariableIdentifier)
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(VariableIdentifier)))))) (VariableIdentifier))))))
@ -304,10 +328,12 @@
(VariableIdentifier) (VariableIdentifier)
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(ConstructorOperator (ConstructorOperator
(ConstructorSymbol)) (ConstructorSymbol))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(ConstructorOperator (ConstructorOperator
(ConstructorSymbol)) (ConstructorSymbol))
(VariableIdentifier)))))) (VariableIdentifier))))))
@ -321,10 +347,12 @@
(VariableIdentifier)) (VariableIdentifier))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(VariableIdentifier)))))) (VariableIdentifier))))))
@ -338,6 +366,7 @@
(Statements (Statements
(InfixOperatorApp (InfixOperatorApp
(Integer) (Integer)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(Integer)))) (Integer))))
@ -361,23 +390,29 @@
(Statements (Statements
(InfixOperatorApp (InfixOperatorApp
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(App (App
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
(Lambda (Lambda
(VariableIdentifier) (VariableIdentifier)
(InfixOperatorApp (InfixOperatorApp
(Tuple (Tuple
(VariableIdentifier)) (VariableIdentifier))
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(InfixOperatorApp (InfixOperatorApp
(ConstructorIdentifier) (ConstructorIdentifier)
(Empty)
(VariableOperator (VariableOperator
(VariableSymbol)) (VariableSymbol))
(App (App
(VariableIdentifier) (VariableIdentifier)
(Empty)
(VariableIdentifier)))))) (VariableIdentifier))))))
(Empty)
(VariableIdentifier))))))) (VariableIdentifier)))))))

View File

@ -0,0 +1,159 @@
f num1 num2 = num2
f (Ex 1) = Ex 1
f n@num1 x@num2 = x
f _ num2 = num2
f 1 2 = 3
f "hello" "world" = "goodbye"
f 'a' 'b' = 'c'
f 1.0 2.0 = 3.0
f Ex { a = 1 } = 1
f Ex { a = 1, b = 2 } = 2
f Ex {} = 2
f Blob{start, end} = [start, end]
f Blob{..} = [start, end]
f Blob{start, end = end', ..} = [start, end', name, path]
f (1) = 1
f (-(1)) = 1
f (Example a b c) = a
f (a :<: f) = 2
f ([]) = 1
f (1, 2) = 1
f ((Just 1), Just 2) = Just 1
f (Just a, Nothing) = Nothing
f (Left a, Right b, -(1)) = b
f [] = 0
f [a] = a
f (a:bs) = a
f (a:b:cs) = a
f (a:b:c:ds) = a
f ~a = 1
f ~(-(1)) = 1
f ~(~(a, b), c) = c
f x = case x of
Just a | a < 10 -> True
| a < 20 -> False
| a > 19 -> True
g x = case x of
Just a | a < 10, True, let b :: Int -> Int
b x = x -> True
Nothing -> False
f x = case x of
Just _ -> x where x = True
Nothing -> False
f a = case a of
Just a -> g
where g = h
h = 1
Nothing -> i
where i = j
j = 2
f a = case a of
Just a -> g
Nothing -> i
where g = 1
i = 2
f = (
\ a ->
case a of
A -> b
)
a = reify tcName >>= \case
TyConI (DataD _ _ _ _ cons _) -> do
sigs <- filter (const makeSigs) <$> traverse genSig cons
decs <- traverse genDecl cons
pure $ sigs ++ decs
_ ->
fail "makeEff expects a type constructor"
f x | x < 10, x > 2 = True
| otherwise = False
f x = do
let z = x
y <- a
pure y
f x = do
let z = x
a
y
where y = pure a
a = 1
f y@Example = y { a = 1, b = 2 }
f y@(Example { a = a', b = b' }) = y { a = a' + 1, b = b' ++ " !" }
f = read @Int
f = read @Int "5"
f = read @Prelude.Int "5"
f = read @Int . Prelude.id
f = read @Prelude.Int . Prelude.id
f = read @Int . id
f = read @Prelude.Int . Prelude.id
f = read @Int .id
f = read @Prelude.Int .Prelude.id
f = read @Int. id
f = read @Prelude.Int. Prelude.id
f = read @(x (Bar a))
f = Data.List.uncons . id
f = Data.List.uncons . Prelude.id
f = Data.List.uncons. id
f = Data.List.uncons. Prelude.id
f = Data.List.uncons .id
f = Data.List.uncons .Prelude.id
f = Data.List.uncons.id
f = Data.List.uncons.Prelude.id
f = Bar ': Baz
f = Bar ':<: Baz
f = (<>)
f = a <>
f = 1 where
g = 2 where
f = a where
{- comment -}
f = a where
{-
-}
f = a where
--
f = a where
{-# COLUMN 42 #-}
b = 2
eval (a :< b) (fmap subtermValue -> QualifiedName name iden) = bar
sort :: (?cmp :: a -> a -> Bool) => [a] -> [a]
sort = sortBy ?cmp
b (E (u :: Union e b) q) = a
ifte :: ( IvoryStore a
, IvoryZero ('Stored a)
, GetAlloc eff ~ 'Scope s
) => IBool
-> Ivory eff a
-> Ivory eff a
-> Ivory eff a
haystackClient maybeURL managerSettings appName
| Just url <- maybeURL = do
manager <- newManager managerSettings
request' <- parseRequest url
let request = request'
{ method = "POST"
, requestHeaders = ("Content-Type", "application/json; charset=utf-8") : requestHeaders request'
}
pure $ HaystackClient request manager appName
| otherwise = pure NullHaystackClient

View File

@ -0,0 +1,160 @@
g num1 num2 = num2
g (Ex 1) = Ex 1
g n@num1 x@num2 = x
g _ num2 = num2
g 1 2 = 3
g "hello" "world" = "goodbye"
g 'a' 'b' = 'c'
g 1.0 2.0 = 3.0
g Ex { a = 1 } = 1
g Ex { a = 1, b = 2 } = 2
g Ex {} = 2
g Blob{start, end} = [start, end]
g Blob{..} = [start, end]
g Blob{start, end = end', ..} = [start, end', name, path]
g c@Ex { a = 1 } = c
g (1) = 1
g (-(1)) = 1
g (Example a b c) = a
g (a :<: f) = 2
g ([]) = 1
g (1, 2) = 1
g ((Just 1), Just 2) = Just 1
g (Just a, Nothing) = Nothing
g (Left a, Right b, -(1)) = b
g [] = 0
g [a] = a
g (a:bs) = a
g (a:b:cs) = a
g (a:b:c:ds) = a
g ~a = 1
g ~(-(1)) = 1
g ~(~(a, b), c) = c
g x = case x of
Just a | a < 10 -> True
| a < 20 -> False
| a > 19 -> True
f x = case x of
Just a | a < 10, True, let b :: Int -> Int
b x = x -> True
Nothing -> False
g x = case x of
Just _ -> x where x = True
Nothing -> False
g a = case a of
Just a -> g
where g = h
h = 1
Nothing -> i
where i = j
j = 2
g a = case a of
Just a -> g
Nothing -> i
where g = 1
i = 2
g = (
\ a ->
case a of
A -> b
)
b = reify tcName >>= \case
TyConI (DataD _ _ _ _ cons _) -> do
sigs <- filter (const makeSigs) <$> traverse genSig cons
decs <- traverse genDecl cons
pure $ sigs ++ decs
_ ->
fail "makeEff expects a type constructor"
g y | y < 10, y > 2 = True
| otherwise = False
g x = do
let z = x
y <- a
pure y
g x = do
let z = x
a
y
where y = pure a
a = 1
g y@Example = y { a = 1, b = 2 }
g y@(Example { a = a', b = b' }) = y { a = a' + 1, b = b' ++ " !" }
g = read @Int
g = read @Int "5"
g = read @Prelude.Int "5"
g = read @Int . Prelude.id
g = read @Prelude.Int . Prelude.id
g = read @Int . id
g = read @Prelude.Int . Prelude.id
g = read @Int .id
g = read @Prelude.Int .Prelude.id
g = read @Int. id
g = read @Prelude.Int. Prelude.id
g = read @(x (Bar a))
g = Data.List.uncons . id
g = Data.List.uncons . Prelude.id
g = Data.List.uncons. id
g = Data.List.uncons. Prelude.id
g = Data.List.uncons .id
g = Data.List.uncons .Prelude.id
g = Data.List.uncons.id
g = Data.List.uncons.Prelude.id
g = Bar ': Baz
g = Bar ':<: Baz
g = (<>)
g = a <>
g = 1 where
h = 2 where
g = a where
{- comment -}
g = a where
{-
-}
g = a where
--
g = a where
{-# COLUMN 42 #-}
c = 2
eval' (a :< b) (fmap subtermValue -> QualifiedName name' iden) = foo
sort' :: (?cmp :: a -> a -> Bool) => [a] -> [a]
sort' = sortBy ?cmp
c (F (u :: Union e b) q) = b
g :: ( IvoryStore a
, IvoryZero ('Stored a)
, GetAlloc eff ~ 'Scope s
) => IBool
-> Ivory eff a
-> Ivory eff a
-> Ivory eff a
needlestackClient maybeURL directorSettings appName
| Just url <- maybeURL = do
director <- newDirector directorSettings
request' <- parseRequest url
let request = request'
{ method = "POST"
, requestHeaders = ("Content-Type", "application/json; charset=utf-8") : requestHeaders request'
}
pure $ NeedlestackClient request director appName
| otherwise = pure NullNeedlestackClient

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -183,7 +183,7 @@
(GADTConstructor (GADTConstructor
(Empty) (Empty)
(TypeConstructorIdentifier) (TypeConstructorIdentifier)
(Context (Statements
(Pragma) (Pragma)
(FunctionType (FunctionType
(Type (Type

View File

@ -183,7 +183,7 @@
(GADTConstructor (GADTConstructor
(Empty) (Empty)
(TypeConstructorIdentifier) (TypeConstructorIdentifier)
(Context (Statements
(Pragma) (Pragma)
(FunctionType (FunctionType
(Type (Type

View File

@ -171,7 +171,7 @@
(GADTConstructor (GADTConstructor
(Empty) (Empty)
(TypeConstructorIdentifier) (TypeConstructorIdentifier)
(Context (Statements
(Pragma) (Pragma)
(FunctionType (FunctionType
(Type (Type

View File

@ -172,7 +172,7 @@
(GADTConstructor (GADTConstructor
(Empty) (Empty)
(TypeConstructorIdentifier) (TypeConstructorIdentifier)
(Context (Statements
(Pragma) (Pragma)
(FunctionType (FunctionType
(Type (Type

View File

@ -0,0 +1,52 @@
f = let y = x
x = let g = 1
in g
in y
f = a
where a = b
b = 1
f = a
where a = b
b = 1
f = foo
where a = b
where c = d
e = f
x = w
g = do c
a
do b
e
do g
g
h
i
a = do
b
where
c = d
a = do
b
where
c = d
a = do
b
where
c = d
class Foo bar where
fooVariables :: bar -> [Baz]
{-
-}
class Foo1 bar where
liftFoo = foldMap
freeFoo bar = case freeFoo bar of
[n] -> Right n

View File

@ -0,0 +1,42 @@
f = let x = y
y = let h = 1
in h
in x
f = b
where b = a
a = 1
f = c
where c = b
b = 1
f = bar
where c = a
where a = e
e = f
w = x
g = do a
b
do c
d
do e
f
g
h
b = do
a
where
d = c
b = do
c
where
c = e
b = do
a
where
a = f

View File

@ -0,0 +1,212 @@
(Module
(Empty)
(Statements
(Function
(VariableIdentifier)
(Statements
(Let
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(VariableIdentifier)-})-})-}
(Function
(VariableIdentifier)
(Statements
{+(VariableIdentifier)+}
{-(Let
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(Integer)-})-})-}
{-(VariableIdentifier)-})-}))
{+(Function
{+(VariableIdentifier)+}
{+(Statements
{+(Let
{+(Function
{+(VariableIdentifier)+}
{+(Statements
{+(Integer)+})+})+}
{+(VariableIdentifier)+})+})+})+}
{ (VariableIdentifier)
->(VariableIdentifier) })))
(Function
(VariableIdentifier)
(Statements
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(VariableIdentifier)-})-})-}
(Function
(VariableIdentifier)
(Statements
{+(VariableIdentifier)+}
{-(Integer)-}))
{+(Function
{+(VariableIdentifier)+}
{+(Statements
{+(Integer)+})+})+})))
(Function
(VariableIdentifier)
(Statements
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(VariableIdentifier)))
(Function
(VariableIdentifier)
(Statements
(Integer))))))
(Function
(VariableIdentifier)
(Statements
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
{ (VariableIdentifier)
->(VariableIdentifier) }))
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier))))))
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
{ (VariableIdentifier)
->(VariableIdentifier) })))))
(Function
(VariableIdentifier)
(Statements
(Do
{-(VariableIdentifier)-}
(VariableIdentifier)
{+(VariableIdentifier)+}
(Do
{+(VariableIdentifier)+}
{+(VariableIdentifier)+}
{+(Do
{+(VariableIdentifier)+}
{+(VariableIdentifier)+})+}
{ (VariableIdentifier)
->(VariableIdentifier) }
{-(VariableIdentifier)-}
{-(Do
{-(VariableIdentifier)-}
{-(VariableIdentifier)-})-}
{-(VariableIdentifier)-})
{ (VariableIdentifier)
->(VariableIdentifier) })))
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(Do
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
{ (VariableIdentifier)
->(VariableIdentifier) }))))))
{+(Function
{+(VariableIdentifier)+}
{+(Statements
{+(Do
{+(VariableIdentifier)+}
{+(Statements
{+(Function
{+(VariableIdentifier)+}
{+(Statements
{+(VariableIdentifier)+})+})+})+})+})+})+}
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(Do
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
{ (VariableIdentifier)
->(VariableIdentifier) }))))))
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(Do
{-(VariableIdentifier)-}
{-(Statements
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(VariableIdentifier)-})-})-})-})-})-})-}
{-(TypeClass
{-(Empty)-}
{-(TypeClassIdentifier)-}
{-(TypeVariableIdentifier)-}
{-(Statements
{-(Context
{-(Comment)-}
{-(TypeSignature
{-(VariableIdentifier)-}
{-(FunctionType
{-(Type
{-(TypeVariableIdentifier)-}
{-(TypeParameters)-}
{-(Empty)-})-}
{-(Type
{-(Array
{-(Type
{-(TypeConstructorIdentifier)-}
{-(TypeParameters)-}
{-(Empty)-})-})-}
{-(TypeParameters)-}
{-(Empty)-})-})-})-})-})-})-}
{-(TypeClass
{-(Empty)-}
{-(TypeClassIdentifier)-}
{-(TypeVariableIdentifier)-}
{-(Statements
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(VariableIdentifier)-})-})-})-})-}
{-(Function
{-(VariableIdentifier)-}
{-(VariableIdentifier)-}
{-(Statements
{-(Match
{-(App
{-(VariableIdentifier)-}
{-(Empty)-}
{-(VariableIdentifier)-})-}
{-(Pattern
{-(ListPattern
{-(VariableIdentifier)-})-}
{-(App
{-(ConstructorIdentifier)-}
{-(Empty)-}
{-(VariableIdentifier)-})-})-})-})-})-}))

View File

@ -0,0 +1,219 @@
(Module
(Empty)
(Statements
(Function
(VariableIdentifier)
(Statements
(Let
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(VariableIdentifier)-})-})-}
(Function
(VariableIdentifier)
(Statements
{+(VariableIdentifier)+}
{-(Let
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(Integer)-})-})-}
{-(VariableIdentifier)-})-}))
{+(Function
{+(VariableIdentifier)+}
{+(Statements
{+(Let
{+(Function
{+(VariableIdentifier)+}
{+(Statements
{+(Integer)+})+})+}
{+(VariableIdentifier)+})+})+})+}
{ (VariableIdentifier)
->(VariableIdentifier) })))
(Function
(VariableIdentifier)
(Statements
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(VariableIdentifier)-})-})-}
(Function
(VariableIdentifier)
(Statements
{+(VariableIdentifier)+}
{-(Integer)-}))
{+(Function
{+(VariableIdentifier)+}
{+(Statements
{+(Integer)+})+})+})))
(Function
(VariableIdentifier)
(Statements
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(VariableIdentifier)))
(Function
(VariableIdentifier)
(Statements
(Integer))))))
(Function
(VariableIdentifier)
(Statements
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
{ (VariableIdentifier)
->(VariableIdentifier) }))
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier))))))
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
{ (VariableIdentifier)
->(VariableIdentifier) })))))
(Function
(VariableIdentifier)
(Statements
(Do
{+(VariableIdentifier)+}
(VariableIdentifier)
{+(Do
{+(VariableIdentifier)+}
{+(VariableIdentifier)+}
{+(Do
{+(VariableIdentifier)+}
{+(VariableIdentifier)+})+}
{+(VariableIdentifier)+})+}
{ (VariableIdentifier)
->(VariableIdentifier) }
{-(Do
{-(VariableIdentifier)-}
{-(VariableIdentifier)-}
{-(Do
{-(VariableIdentifier)-}
{-(VariableIdentifier)-})-}
{-(VariableIdentifier)-})-}
{-(VariableIdentifier)-})))
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(Do
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
{ (VariableIdentifier)
->(VariableIdentifier) }))))))
{+(Function
{+(VariableIdentifier)+}
{+(Statements
{+(Do
{+(VariableIdentifier)+}
{+(Statements
{+(Function
{+(VariableIdentifier)+}
{+(Statements
{+(VariableIdentifier)+})+})+})+})+})+})+}
{+(Function
{+(VariableIdentifier)+}
{+(Statements
{+(Do
{+(VariableIdentifier)+}
{+(Statements
{+(Function
{+(VariableIdentifier)+}
{+(Statements
{+(VariableIdentifier)+})+})+})+})+})+})+}
{+(TypeClass
{+(Empty)+}
{+(TypeClassIdentifier)+}
{+(TypeVariableIdentifier)+}
{+(Statements
{+(Context
{+(Comment)+}
{+(TypeSignature
{+(VariableIdentifier)+}
{+(FunctionType
{+(Type
{+(TypeVariableIdentifier)+}
{+(TypeParameters)+}
{+(Empty)+})+}
{+(Type
{+(Array
{+(Type
{+(TypeConstructorIdentifier)+}
{+(TypeParameters)+}
{+(Empty)+})+})+}
{+(TypeParameters)+}
{+(Empty)+})+})+})+})+})+})+}
{+(TypeClass
{+(Empty)+}
{+(TypeClassIdentifier)+}
{+(TypeVariableIdentifier)+}
{+(Statements
{+(Function
{+(VariableIdentifier)+}
{+(Statements
{+(VariableIdentifier)+})+})+})+})+}
{+(Function
{+(VariableIdentifier)+}
{+(VariableIdentifier)+}
{+(Statements
{+(Match
{+(App
{+(VariableIdentifier)+}
{+(Empty)+}
{+(VariableIdentifier)+})+}
{+(Pattern
{+(ListPattern
{+(VariableIdentifier)+})+}
{+(App
{+(ConstructorIdentifier)+}
{+(Empty)+}
{+(VariableIdentifier)+})+})+})+})+})+}
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(Do
{-(VariableIdentifier)-}
{-(Statements
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(VariableIdentifier)-})-})-})-})-})-})-}
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(Do
{-(VariableIdentifier)-}
{-(Statements
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(VariableIdentifier)-})-})-})-})-})-})-}))

View File

@ -0,0 +1,160 @@
(Module
(Empty)
(Statements
(Function
(VariableIdentifier)
(Statements
(Let
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))
(Function
(VariableIdentifier)
(Statements
(Let
(Function
(VariableIdentifier)
(Statements
(Integer)))
(VariableIdentifier))))
(VariableIdentifier))))
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))
(Function
(VariableIdentifier)
(Statements
(Integer))))))
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))
(Function
(VariableIdentifier)
(Statements
(Integer))))))
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier))))))
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier))))))
(Function
(VariableIdentifier)
(Statements
(Do
(VariableIdentifier)
(VariableIdentifier)
(Do
(VariableIdentifier)
(VariableIdentifier)
(Do
(VariableIdentifier)
(VariableIdentifier))
(VariableIdentifier))
(VariableIdentifier))))
(Function
(VariableIdentifier)
(Statements
(Do
(VariableIdentifier)
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))))))
(Function
(VariableIdentifier)
(Statements
(Do
(VariableIdentifier)
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))))))
(Function
(VariableIdentifier)
(Statements
(Do
(VariableIdentifier)
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))))))
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(Context
(Comment)
(TypeSignature
(VariableIdentifier)
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty)))
(TypeParameters)
(Empty)))))))
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))))
(Function
(VariableIdentifier)
(VariableIdentifier)
(Statements
(Match
(App
(VariableIdentifier)
(Empty)
(VariableIdentifier))
(Pattern
(ListPattern
(VariableIdentifier))
(App
(ConstructorIdentifier)
(Empty)
(VariableIdentifier))))))))

View File

@ -0,0 +1,113 @@
(Module
(Empty)
(Statements
(Function
(VariableIdentifier)
(Statements
(Let
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))
(Function
(VariableIdentifier)
(Statements
(Let
(Function
(VariableIdentifier)
(Statements
(Integer)))
(VariableIdentifier))))
(VariableIdentifier))))
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))
(Function
(VariableIdentifier)
(Statements
(Integer))))))
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))
(Function
(VariableIdentifier)
(Statements
(Integer))))))
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier))))))
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier))))))
(Function
(VariableIdentifier)
(Statements
(Do
(VariableIdentifier)
(VariableIdentifier)
(Do
(VariableIdentifier)
(VariableIdentifier)
(Do
(VariableIdentifier)
(VariableIdentifier))
(VariableIdentifier))
(VariableIdentifier))))
(Function
(VariableIdentifier)
(Statements
(Do
(VariableIdentifier)
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))))))
(Function
(VariableIdentifier)
(Statements
(Do
(VariableIdentifier)
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))))))
(Function
(VariableIdentifier)
(Statements
(Do
(VariableIdentifier)
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))))))))

View File

@ -1,11 +1,10 @@
(Module (Module
(ModuleIdentifier) (ModuleIdentifier)
(Statements (Statements
(Function {+(Function
{ (VariableIdentifier) {+(VariableIdentifier)+}
->(VariableIdentifier) } {+(Statements
(Statements {+(Integer)+})+})+}
(Integer)))
{+(Function {+(Function
{+(VariableIdentifier)+} {+(VariableIdentifier)+}
{+(Statements {+(Statements
@ -284,6 +283,10 @@
{-(VariableIdentifier)-} {-(VariableIdentifier)-}
{-(Statements {-(Statements
{-(Integer)-})-})-} {-(Integer)-})-})-}
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(Integer)-})-})-}
{-(Function {-(Function
{-(VariableIdentifier)-} {-(VariableIdentifier)-}
{-(Statements {-(Statements

View File

@ -1,11 +1,10 @@
(Module (Module
(ModuleIdentifier) (ModuleIdentifier)
(Statements (Statements
(Function {+(Function
{ (VariableIdentifier) {+(VariableIdentifier)+}
->(VariableIdentifier) } {+(Statements
(Statements {+(Integer)+})+})+}
(Integer)))
{+(Function {+(Function
{+(VariableIdentifier)+} {+(VariableIdentifier)+}
{+(Statements {+(Statements
@ -284,6 +283,10 @@
{-(VariableIdentifier)-} {-(VariableIdentifier)-}
{-(Statements {-(Statements
{-(Integer)-})-})-} {-(Integer)-})-})-}
{-(Function
{-(VariableIdentifier)-}
{-(Statements
{-(Integer)-})-})-}
{-(Function {-(Function
{-(VariableIdentifier)-} {-(VariableIdentifier)-}
{-(Statements {-(Statements

View File

@ -1,9 +1,7 @@
(Module (Module
(Empty)
(Statements
(QualifiedModuleIdentifier (QualifiedModuleIdentifier
{ (ModuleIdentifier) { (ModuleIdentifier)
->(ModuleIdentifier) } ->(ModuleIdentifier) }
{ (ModuleIdentifier) { (ModuleIdentifier)
->(ModuleIdentifier) }) ->(ModuleIdentifier) })
(Statements))) (Statements))

View File

@ -1,9 +1,7 @@
(Module (Module
(Empty)
(Statements
(QualifiedModuleIdentifier (QualifiedModuleIdentifier
{ (ModuleIdentifier) { (ModuleIdentifier)
->(ModuleIdentifier) } ->(ModuleIdentifier) }
{ (ModuleIdentifier) { (ModuleIdentifier)
->(ModuleIdentifier) }) ->(ModuleIdentifier) })
(Statements))) (Statements))

View File

@ -1,7 +1,5 @@
(Module (Module
(Empty)
(Statements
(QualifiedModuleIdentifier (QualifiedModuleIdentifier
(ModuleIdentifier) (ModuleIdentifier)
(ModuleIdentifier)) (ModuleIdentifier))
(Statements))) (Statements))

View File

@ -1,7 +1,5 @@
(Module (Module
(Empty)
(Statements
(QualifiedModuleIdentifier (QualifiedModuleIdentifier
(ModuleIdentifier) (ModuleIdentifier)
(ModuleIdentifier)) (ModuleIdentifier))
(Statements))) (Statements))

View File

@ -8,8 +8,7 @@
(Constructor (Constructor
{ (ConstructorIdentifier) { (ConstructorIdentifier)
->(ConstructorIdentifier) } ->(ConstructorIdentifier) }
(TypeParameters (TypeConstructorIdentifier))
(TypeConstructorIdentifier)))
(Empty)) (Empty))
(NewType (NewType
(Context' (Context'
@ -22,8 +21,7 @@
(Constructor (Constructor
{ (ConstructorIdentifier) { (ConstructorIdentifier)
->(ConstructorIdentifier) } ->(ConstructorIdentifier) }
(TypeParameters (TypeVariableIdentifier))
(TypeVariableIdentifier)))
(Empty)) (Empty))
(NewType (NewType
(Statements (Statements
@ -32,7 +30,6 @@
(Constructor (Constructor
{ (ConstructorIdentifier) { (ConstructorIdentifier)
->(ConstructorIdentifier) } ->(ConstructorIdentifier) }
(TypeParameters
(Statements (Statements
(Field (Field
(Statements (Statements
@ -42,7 +39,7 @@
(TypeConstructorIdentifier) (TypeConstructorIdentifier)
(TypeParameters (TypeParameters
(TypeConstructorIdentifier)) (TypeConstructorIdentifier))
(Empty)))))) (Empty)))))
(Empty)) (Empty))
(NewType (NewType
(Statements (Statements
@ -61,11 +58,10 @@
(Constructor (Constructor
{ (ConstructorIdentifier) { (ConstructorIdentifier)
->(ConstructorIdentifier) } ->(ConstructorIdentifier) }
(TypeParameters
(Statements (Statements
(TypeVariableIdentifier) (TypeVariableIdentifier)
(TypeVariableIdentifier) (TypeVariableIdentifier)
(TypeVariableIdentifier)))) (TypeVariableIdentifier)))
(Empty)) (Empty))
(NewType (NewType
(Statements (Statements
@ -74,8 +70,7 @@
(Constructor (Constructor
{ (ConstructorIdentifier) { (ConstructorIdentifier)
->(ConstructorIdentifier) } ->(ConstructorIdentifier) }
(TypeParameters (TypeConstructorIdentifier))
(TypeConstructorIdentifier)))
(Deriving (Deriving
(TypeClassIdentifier))) (TypeClassIdentifier)))
(NewType (NewType
@ -85,8 +80,7 @@
(Constructor (Constructor
{ (ConstructorIdentifier) { (ConstructorIdentifier)
->(ConstructorIdentifier) } ->(ConstructorIdentifier) }
(TypeParameters (TypeVariableIdentifier))
(TypeVariableIdentifier)))
(Deriving (Deriving
(TypeClassIdentifier) (TypeClassIdentifier)
(TypeClassIdentifier) (TypeClassIdentifier)

View File

@ -8,8 +8,7 @@
(Constructor (Constructor
{ (ConstructorIdentifier) { (ConstructorIdentifier)
->(ConstructorIdentifier) } ->(ConstructorIdentifier) }
(TypeParameters (TypeConstructorIdentifier))
(TypeConstructorIdentifier)))
(Empty)) (Empty))
(NewType (NewType
(Context' (Context'
@ -22,8 +21,7 @@
(Constructor (Constructor
{ (ConstructorIdentifier) { (ConstructorIdentifier)
->(ConstructorIdentifier) } ->(ConstructorIdentifier) }
(TypeParameters (TypeVariableIdentifier))
(TypeVariableIdentifier)))
(Empty)) (Empty))
(NewType (NewType
(Statements (Statements
@ -32,7 +30,6 @@
(Constructor (Constructor
{ (ConstructorIdentifier) { (ConstructorIdentifier)
->(ConstructorIdentifier) } ->(ConstructorIdentifier) }
(TypeParameters
(Statements (Statements
(Field (Field
(Statements (Statements
@ -42,7 +39,7 @@
(TypeConstructorIdentifier) (TypeConstructorIdentifier)
(TypeParameters (TypeParameters
(TypeConstructorIdentifier)) (TypeConstructorIdentifier))
(Empty)))))) (Empty)))))
(Empty)) (Empty))
(NewType (NewType
(Statements (Statements
@ -61,11 +58,10 @@
(Constructor (Constructor
{ (ConstructorIdentifier) { (ConstructorIdentifier)
->(ConstructorIdentifier) } ->(ConstructorIdentifier) }
(TypeParameters
(Statements (Statements
(TypeVariableIdentifier) (TypeVariableIdentifier)
(TypeVariableIdentifier) (TypeVariableIdentifier)
(TypeVariableIdentifier)))) (TypeVariableIdentifier)))
(Empty)) (Empty))
(NewType (NewType
(Statements (Statements
@ -74,8 +70,7 @@
(Constructor (Constructor
{ (ConstructorIdentifier) { (ConstructorIdentifier)
->(ConstructorIdentifier) } ->(ConstructorIdentifier) }
(TypeParameters (TypeConstructorIdentifier))
(TypeConstructorIdentifier)))
(Deriving (Deriving
(TypeClassIdentifier))) (TypeClassIdentifier)))
(NewType (NewType
@ -85,8 +80,7 @@
(Constructor (Constructor
{ (ConstructorIdentifier) { (ConstructorIdentifier)
->(ConstructorIdentifier) } ->(ConstructorIdentifier) }
(TypeParameters (TypeVariableIdentifier))
(TypeVariableIdentifier)))
(Deriving (Deriving
(TypeClassIdentifier) (TypeClassIdentifier)
(TypeClassIdentifier) (TypeClassIdentifier)

View File

@ -6,8 +6,7 @@
(TypeConstructorIdentifier)) (TypeConstructorIdentifier))
(Constructor (Constructor
(ConstructorIdentifier) (ConstructorIdentifier)
(TypeParameters (TypeConstructorIdentifier))
(TypeConstructorIdentifier)))
(Empty)) (Empty))
(NewType (NewType
(Context' (Context'
@ -18,15 +17,13 @@
(TypeConstructorIdentifier)) (TypeConstructorIdentifier))
(Constructor (Constructor
(ConstructorIdentifier) (ConstructorIdentifier)
(TypeParameters (TypeVariableIdentifier))
(TypeVariableIdentifier)))
(Empty)) (Empty))
(NewType (NewType
(Statements (Statements
(TypeConstructorIdentifier)) (TypeConstructorIdentifier))
(Constructor (Constructor
(ConstructorIdentifier) (ConstructorIdentifier)
(TypeParameters
(Statements (Statements
(Field (Field
(Statements (Statements
@ -35,7 +32,7 @@
(TypeConstructorIdentifier) (TypeConstructorIdentifier)
(TypeParameters (TypeParameters
(TypeConstructorIdentifier)) (TypeConstructorIdentifier))
(Empty)))))) (Empty)))))
(Empty)) (Empty))
(NewType (NewType
(Statements (Statements
@ -52,19 +49,17 @@
(TypeVariableIdentifier)) (TypeVariableIdentifier))
(Constructor (Constructor
(ConstructorIdentifier) (ConstructorIdentifier)
(TypeParameters
(Statements (Statements
(TypeVariableIdentifier) (TypeVariableIdentifier)
(TypeVariableIdentifier) (TypeVariableIdentifier)
(TypeVariableIdentifier)))) (TypeVariableIdentifier)))
(Empty)) (Empty))
(NewType (NewType
(Statements (Statements
(TypeConstructorIdentifier)) (TypeConstructorIdentifier))
(Constructor (Constructor
(ConstructorIdentifier) (ConstructorIdentifier)
(TypeParameters (TypeConstructorIdentifier))
(TypeConstructorIdentifier)))
(Deriving (Deriving
(TypeClassIdentifier))) (TypeClassIdentifier)))
(NewType (NewType
@ -72,8 +67,7 @@
(TypeConstructorIdentifier)) (TypeConstructorIdentifier))
(Constructor (Constructor
(ConstructorIdentifier) (ConstructorIdentifier)
(TypeParameters (TypeVariableIdentifier))
(TypeVariableIdentifier)))
(Deriving (Deriving
(TypeClassIdentifier) (TypeClassIdentifier)
(TypeClassIdentifier) (TypeClassIdentifier)

View File

@ -6,8 +6,7 @@
(TypeConstructorIdentifier)) (TypeConstructorIdentifier))
(Constructor (Constructor
(ConstructorIdentifier) (ConstructorIdentifier)
(TypeParameters (TypeConstructorIdentifier))
(TypeConstructorIdentifier)))
(Empty)) (Empty))
(NewType (NewType
(Context' (Context'
@ -18,15 +17,13 @@
(TypeConstructorIdentifier)) (TypeConstructorIdentifier))
(Constructor (Constructor
(ConstructorIdentifier) (ConstructorIdentifier)
(TypeParameters (TypeVariableIdentifier))
(TypeVariableIdentifier)))
(Empty)) (Empty))
(NewType (NewType
(Statements (Statements
(TypeConstructorIdentifier)) (TypeConstructorIdentifier))
(Constructor (Constructor
(ConstructorIdentifier) (ConstructorIdentifier)
(TypeParameters
(Statements (Statements
(Field (Field
(Statements (Statements
@ -35,7 +32,7 @@
(TypeConstructorIdentifier) (TypeConstructorIdentifier)
(TypeParameters (TypeParameters
(TypeConstructorIdentifier)) (TypeConstructorIdentifier))
(Empty)))))) (Empty)))))
(Empty)) (Empty))
(NewType (NewType
(Statements (Statements
@ -52,19 +49,17 @@
(TypeVariableIdentifier)) (TypeVariableIdentifier))
(Constructor (Constructor
(ConstructorIdentifier) (ConstructorIdentifier)
(TypeParameters
(Statements (Statements
(TypeVariableIdentifier) (TypeVariableIdentifier)
(TypeVariableIdentifier) (TypeVariableIdentifier)
(TypeVariableIdentifier)))) (TypeVariableIdentifier)))
(Empty)) (Empty))
(NewType (NewType
(Statements (Statements
(TypeConstructorIdentifier)) (TypeConstructorIdentifier))
(Constructor (Constructor
(ConstructorIdentifier) (ConstructorIdentifier)
(TypeParameters (TypeConstructorIdentifier))
(TypeConstructorIdentifier)))
(Deriving (Deriving
(TypeClassIdentifier))) (TypeClassIdentifier)))
(NewType (NewType
@ -72,8 +67,7 @@
(TypeConstructorIdentifier)) (TypeConstructorIdentifier))
(Constructor (Constructor
(ConstructorIdentifier) (ConstructorIdentifier)
(TypeParameters (TypeVariableIdentifier))
(TypeVariableIdentifier)))
(Deriving (Deriving
(TypeClassIdentifier) (TypeClassIdentifier)
(TypeClassIdentifier) (TypeClassIdentifier)

View File

@ -0,0 +1,8 @@
f = if a then 1 else 2
f = if a; then b; else c
f = if (if a then b else c) then d else e
f = if if a then b else c then d else e
head' :: [a] -> a
head' [] = error "No head for empty lists!"
head' (x:_) = x

View File

@ -0,0 +1,8 @@
g = if b then 1 else 2
g = if b; then c; else d
g = if (if b then c else d) then e else f
g = if if b then c else d then e else f
h' :: [a] -> a
h' [] = error "No head for empty lists!"
h' (x:_) = x

View File

@ -0,0 +1,90 @@
(Module
(Empty)
(Statements
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(If
{ (VariableIdentifier)
->(VariableIdentifier) }
(Integer)
(Integer))))
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(If
{ (VariableIdentifier)
->(VariableIdentifier) }
{ (VariableIdentifier)
->(VariableIdentifier) }
{ (VariableIdentifier)
->(VariableIdentifier) })))
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(If
(If
{ (VariableIdentifier)
->(VariableIdentifier) }
{ (VariableIdentifier)
->(VariableIdentifier) }
{ (VariableIdentifier)
->(VariableIdentifier) })
{ (VariableIdentifier)
->(VariableIdentifier) }
{ (VariableIdentifier)
->(VariableIdentifier) })))
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(If
(If
{ (VariableIdentifier)
->(VariableIdentifier) }
{ (VariableIdentifier)
->(VariableIdentifier) }
{ (VariableIdentifier)
->(VariableIdentifier) })
{ (VariableIdentifier)
->(VariableIdentifier) }
{ (VariableIdentifier)
->(VariableIdentifier) })))
(TypeSignature
{ (VariableIdentifier)
->(VariableIdentifier) }
(FunctionType
(Type
(Array
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(ListConstructor)
(Statements
(App
(VariableIdentifier)
(Empty)
(TextElement))))
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(VariableIdentifier)
(ConstructorOperator
(ConstructorSymbol))
(Wildcard))
(Statements
(VariableIdentifier)))))

View File

@ -0,0 +1,90 @@
(Module
(Empty)
(Statements
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(If
{ (VariableIdentifier)
->(VariableIdentifier) }
(Integer)
(Integer))))
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(If
{ (VariableIdentifier)
->(VariableIdentifier) }
{ (VariableIdentifier)
->(VariableIdentifier) }
{ (VariableIdentifier)
->(VariableIdentifier) })))
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(If
(If
{ (VariableIdentifier)
->(VariableIdentifier) }
{ (VariableIdentifier)
->(VariableIdentifier) }
{ (VariableIdentifier)
->(VariableIdentifier) })
{ (VariableIdentifier)
->(VariableIdentifier) }
{ (VariableIdentifier)
->(VariableIdentifier) })))
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(If
(If
{ (VariableIdentifier)
->(VariableIdentifier) }
{ (VariableIdentifier)
->(VariableIdentifier) }
{ (VariableIdentifier)
->(VariableIdentifier) })
{ (VariableIdentifier)
->(VariableIdentifier) }
{ (VariableIdentifier)
->(VariableIdentifier) })))
(TypeSignature
{ (VariableIdentifier)
->(VariableIdentifier) }
(FunctionType
(Type
(Array
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(ListConstructor)
(Statements
(App
(VariableIdentifier)
(Empty)
(TextElement))))
(Function
{ (VariableIdentifier)
->(VariableIdentifier) }
(Statements
(VariableIdentifier)
(ConstructorOperator
(ConstructorSymbol))
(Wildcard))
(Statements
(VariableIdentifier)))))

View File

@ -0,0 +1,69 @@
(Module
(Empty)
(Statements
(Function
(VariableIdentifier)
(Statements
(If
(VariableIdentifier)
(Integer)
(Integer))))
(Function
(VariableIdentifier)
(Statements
(If
(VariableIdentifier)
(VariableIdentifier)
(VariableIdentifier))))
(Function
(VariableIdentifier)
(Statements
(If
(If
(VariableIdentifier)
(VariableIdentifier)
(VariableIdentifier))
(VariableIdentifier)
(VariableIdentifier))))
(Function
(VariableIdentifier)
(Statements
(If
(If
(VariableIdentifier)
(VariableIdentifier)
(VariableIdentifier))
(VariableIdentifier)
(VariableIdentifier))))
(TypeSignature
(VariableIdentifier)
(FunctionType
(Type
(Array
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Function
(VariableIdentifier)
(ListConstructor)
(Statements
(App
(VariableIdentifier)
(Empty)
(TextElement))))
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)
(ConstructorOperator
(ConstructorSymbol))
(Wildcard))
(Statements
(VariableIdentifier)))))

View File

@ -0,0 +1,69 @@
(Module
(Empty)
(Statements
(Function
(VariableIdentifier)
(Statements
(If
(VariableIdentifier)
(Integer)
(Integer))))
(Function
(VariableIdentifier)
(Statements
(If
(VariableIdentifier)
(VariableIdentifier)
(VariableIdentifier))))
(Function
(VariableIdentifier)
(Statements
(If
(If
(VariableIdentifier)
(VariableIdentifier)
(VariableIdentifier))
(VariableIdentifier)
(VariableIdentifier))))
(Function
(VariableIdentifier)
(Statements
(If
(If
(VariableIdentifier)
(VariableIdentifier)
(VariableIdentifier))
(VariableIdentifier)
(VariableIdentifier))))
(TypeSignature
(VariableIdentifier)
(FunctionType
(Type
(Array
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Function
(VariableIdentifier)
(ListConstructor)
(Statements
(App
(VariableIdentifier)
(Empty)
(TextElement))))
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)
(ConstructorOperator
(ConstructorSymbol))
(Wildcard))
(Statements
(VariableIdentifier)))))

View File

@ -0,0 +1,42 @@
[|example|]
[e|example|]
[p|example|]
[t|example|]
[d|example|]
[str|example|]
[ | example| ]
[ e| example| ]
[ p| example| ]
[ t| example| ]
[ d| example| ]
[ str| example| ]
[ | example | ]
[ e | example | ]
[ p | example | ]
[ t | example | ]
[ d | example | ]
[ str | example | ]
[str|integer,double,varchar,boolean,date,money,enum
|13,3.14159,testing!,false,1900-01-01,$3.99,foo
|12,0.1,a string,true,1929-10-01,12,bar
|]
[ | [{ "ret_setof_integers": 1 },
{ "ret_setof_integers": 2 },
{ "ret_setof_integers": 3 }] | ]
[|
[
{ "ret_setof_integers": 1 },
{ "ret_setof_integers": 2 },
{ "ret_setof_integers": 3 }
]
|]
f = [|a|] `b` c
f = $x
f = $(a . b $ c)
$(makeEff ''Embedded)

View File

@ -0,0 +1,104 @@
(Module
(Empty)
(Statements
(QuasiQuotation
(Empty)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(QuasiQuotationExpression)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(QuasiQuotationPattern)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(QuasiQuotationType)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(QuasiQuotationDeclaration)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(QuasiQuotationQuoter)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(Empty)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(QuasiQuotationExpression)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(QuasiQuotationPattern)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(QuasiQuotationType)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(QuasiQuotationDeclaration)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(QuasiQuotationQuoter)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(Empty)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(QuasiQuotationExpression)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(QuasiQuotationPattern)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(QuasiQuotationType)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(QuasiQuotationDeclaration)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(QuasiQuotationQuoter)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(QuasiQuotationQuoter)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(Empty)
(QuasiQuotationExpressionBody))
(QuasiQuotation
(Empty)
(QuasiQuotationExpressionBody))
(Function
(VariableIdentifier)
(Statements
(InfixOperatorApp
(QuasiQuotation
(Empty)
(QuasiQuotationExpressionBody))
(Empty)
(VariableOperator
(InfixVariableIdentifier))
(VariableIdentifier))))
(Function
(VariableIdentifier)
(Statements
(Splice
(VariableIdentifier))))
(Function
(VariableIdentifier)
(Statements
(Splice
(InfixOperatorApp
(VariableIdentifier)
(Empty)
(VariableOperator
(VariableSymbol))
(InfixOperatorApp
(VariableIdentifier)
(Empty)
(VariableOperator
(VariableSymbol))
(VariableIdentifier))))))
(Splice
(App
(VariableIdentifier)
(Empty)
(QuotedName
(QuotedName
(TypeConstructorIdentifier)))))))

View File

@ -0,0 +1,42 @@
[|example'|]
[e|example'|]
[p|example'|]
[t|example'|]
[d|example'|]
[str|example'|]
[ | example'| ]
[ e| example'| ]
[ p| example'| ]
[ t| example'| ]
[ d| example'| ]
[ str| example'| ]
[ | example' | ]
[ e | example' | ]
[ p | example' | ]
[ t | example' | ]
[ d | example' | ]
[ str | example' | ]
[str|integer,double,varchar,boolean,date,money,enum
|12,0.1,a string,true,1929-10-01,12,bar
|13,3.14159,testing!,false,1900-01-01,$3.99,foo
|]
[ | [{ "ret_setof_integers": 3 },
{ "ret_setof_integers": 4 },
{ "ret_setof_integers": 5 }] | ]
[|
[
{ "ret_setof_integers": 3 },
{ "ret_setof_integers": 4 },
{ "ret_setof_integers": 5 }
]
|]
g = [|a|] `b` c
g = $x
g = $(a . b $ c)
$(makeEff' ''Embedded)

View File

@ -0,0 +1,48 @@
class Show a where {}
class Show a b where {}
class Show a => Read a where {}
class (Show a, Eq a) => Read a where {}
class Foo a where {
op :: Num b => a -> b -> a;
op' :: (Num a, Num b) => a -> b -> a;
}
class Foo a where
infixl `op`
infixr 7 `op`
infix 7 `op`, `ip`, `ap`
infix <$>
infix 7 <$>
infix 7 :
infix 7 :.
infix 7 :<:
class (Eq a) => Ord a where
compare :: a -> a -> Ordering
(<), (<=), (>=), (>) :: a -> a -> Bool
max, min :: a -> a -> a
id :: a
class Bar a b m => Baz a b m where {}
class Bar baz where
foo :: wiz -> Baz
default foo :: wiz -> Baz
class Bar (baz :: Foo) where
class Effectful (m :: [* -> *] -> * -> *) where
class Foo bar where
type Baz wiz :: Wax
class Foo bar where
type Baz wiz :: [* -> *]
class Bar baz => Foo fax where
type family Woo a :: [* -> *]
class (Monad a, Show b) => Foo a b c | a -> c, b -> c where
d :: a b

View File

@ -0,0 +1,48 @@
class Eq a where {}
class Ord a b where {}
class Eq a => Ord a where {}
class (Show a, Eq a) => Ord a where {}
class Bar a where {
op' :: Num b => a -> b -> a;
op :: (Num a, Num b) => a -> b -> a;
}
class Bar a where
infixl `op`
infixr 8 `op`
infix 8 `op`, `ip`, `ap`
infix <$>
infix 8 <$>
infix 8 :
infix 8 :.
infix 8 :<:
class (Eq b) => Ord b where
compare :: b -> b -> Ordering
(<), (<=), (>=), (>) :: b -> b -> Bool
max, min :: b -> b -> b
id :: b
class Foo a b m => Bar a b m where {}
class Foo bat where
bar :: bat -> Baz
default bar :: bat -> Baz
class Foo (baz :: Bar) where
class Effectful' (m' :: [* -> *] -> * -> *) where
class Foo bar where
type Baz wiz :: Wax
class Foo bar where
type Baz wiz :: [* -> *]
class Foo baz => Bar fax where
type family Woot a :: [* -> *]
class (Monad a, Show b) => Foo a b c | b -> d, a -> b where
d :: a b

View File

@ -0,0 +1,385 @@
(Module
(Empty)
(Statements
(TypeClass
(Empty)
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Empty)
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Context'
(Class
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)))
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Context'
(Statements
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))))
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Empty)
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)
(Statements
(TypeSignature
{ (VariableIdentifier)
->(VariableIdentifier) }
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))))
(TypeSignature
{ (VariableIdentifier)
->(VariableIdentifier) }
(Context'
(Statements
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))))))
(TypeClass
(Empty)
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)
(Statements
(Fixity'
(Empty)
(VariableOperator
(InfixVariableIdentifier)))
(Fixity'
{ (Integer)
->(Integer) }
(VariableOperator
(InfixVariableIdentifier)))
(Fixity'
{ (Integer)
->(Integer) }
(VariableOperator
(InfixVariableIdentifier))
(VariableOperator
(InfixVariableIdentifier))
(VariableOperator
(InfixVariableIdentifier)))
(Fixity'
(Empty)
(VariableOperator
(VariableSymbol)))
(Fixity'
{ (Integer)
->(Integer) }
(VariableOperator
(VariableSymbol)))
(Fixity'
{ (Integer)
->(Integer) }
(ConstructorOperator
(ConstructorSymbol)))
(Fixity'
{ (Integer)
->(Integer) }
(ConstructorOperator
(ConstructorSymbol)))
(Fixity'
{ (Integer)
->(Integer) }
(ConstructorOperator
(ConstructorSymbol)))))
(TypeClass
(Context'
(Class
(TypeClassIdentifier)
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }))
(TypeClassIdentifier)
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(Statements
(TypeSignature
(VariableIdentifier)
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty)))))
(TypeSignature
(VariableOperator
(VariableSymbol))
(VariableOperator
(VariableSymbol))
(VariableOperator
(VariableSymbol))
(VariableOperator
(VariableSymbol))
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty)))))
(TypeSignature
(VariableIdentifier)
(VariableIdentifier)
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty)))))
(TypeSignature
(VariableIdentifier)
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) })))
(TypeClass
(Context'
(Class
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)))
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Empty)
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(Statements
(TypeSignature
{ (VariableIdentifier)
->(VariableIdentifier) }
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))
(DefaultSignature
{ (VariableIdentifier)
->(VariableIdentifier) }
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))))
(TypeClass
(Empty)
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(AnnotatedTypeVariable
(TypeVariableIdentifier)
{ (TypeConstructorIdentifier)
->(TypeConstructorIdentifier) })
(Statements))
(TypeClass
(Empty)
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(AnnotatedTypeVariable
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(KindFunctionType
(Kind
(KindListType
(KindFunctionType
(Kind
(Star))
(Kind
(Star)))))
(KindFunctionType
(Kind
(Star))
(Kind
(Star)))))
(Statements))
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(TypeSynonym
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(TypeSignature
(TypeConstructorIdentifier)))))
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(TypeSynonym
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(KindSignature
(KindListType
(KindFunctionType
(Kind
(Star))
(Kind
(Star))))))))
(TypeClass
(Context'
(Class
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)))
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)
(Statements
(TypeFamily
{ (TypeConstructorIdentifier)
->(TypeConstructorIdentifier) }
(TypeVariableIdentifier)
(KindSignature
(KindListType
(KindFunctionType
(Kind
(Star))
(Kind
(Star)))))
(Empty))))
(TypeClass
(Context'
(Statements
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))))
(TypeClassIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(FunctionalDependency
(Statements
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty)))
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty)))))
(Statements
(TypeSignature
(VariableIdentifier)
(Statements
(TypeVariableIdentifier)
(TypeVariableIdentifier)))))))

View File

@ -0,0 +1,385 @@
(Module
(Empty)
(Statements
(TypeClass
(Empty)
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Empty)
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Context'
(Class
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)))
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Context'
(Statements
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))))
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Empty)
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)
(Statements
(TypeSignature
{ (VariableIdentifier)
->(VariableIdentifier) }
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))))
(TypeSignature
{ (VariableIdentifier)
->(VariableIdentifier) }
(Context'
(Statements
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))))))
(TypeClass
(Empty)
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)
(Statements
(Fixity'
(Empty)
(VariableOperator
(InfixVariableIdentifier)))
(Fixity'
{ (Integer)
->(Integer) }
(VariableOperator
(InfixVariableIdentifier)))
(Fixity'
{ (Integer)
->(Integer) }
(VariableOperator
(InfixVariableIdentifier))
(VariableOperator
(InfixVariableIdentifier))
(VariableOperator
(InfixVariableIdentifier)))
(Fixity'
(Empty)
(VariableOperator
(VariableSymbol)))
(Fixity'
{ (Integer)
->(Integer) }
(VariableOperator
(VariableSymbol)))
(Fixity'
{ (Integer)
->(Integer) }
(ConstructorOperator
(ConstructorSymbol)))
(Fixity'
{ (Integer)
->(Integer) }
(ConstructorOperator
(ConstructorSymbol)))
(Fixity'
{ (Integer)
->(Integer) }
(ConstructorOperator
(ConstructorSymbol)))))
(TypeClass
(Context'
(Class
(TypeClassIdentifier)
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }))
(TypeClassIdentifier)
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(Statements
(TypeSignature
(VariableIdentifier)
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty)))))
(TypeSignature
(VariableOperator
(VariableSymbol))
(VariableOperator
(VariableSymbol))
(VariableOperator
(VariableSymbol))
(VariableOperator
(VariableSymbol))
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty)))))
(TypeSignature
(VariableIdentifier)
(VariableIdentifier)
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty)))))
(TypeSignature
(VariableIdentifier)
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) })))
(TypeClass
(Context'
(Class
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)))
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Empty)
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(Statements
(TypeSignature
{ (VariableIdentifier)
->(VariableIdentifier) }
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))
(DefaultSignature
{ (VariableIdentifier)
->(VariableIdentifier) }
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))))
(TypeClass
(Empty)
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(AnnotatedTypeVariable
(TypeVariableIdentifier)
{ (TypeConstructorIdentifier)
->(TypeConstructorIdentifier) })
(Statements))
(TypeClass
(Empty)
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(AnnotatedTypeVariable
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(KindFunctionType
(Kind
(KindListType
(KindFunctionType
(Kind
(Star))
(Kind
(Star)))))
(KindFunctionType
(Kind
(Star))
(Kind
(Star)))))
(Statements))
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(TypeSynonym
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(TypeSignature
(TypeConstructorIdentifier)))))
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(TypeSynonym
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(KindSignature
(KindListType
(KindFunctionType
(Kind
(Star))
(Kind
(Star))))))))
(TypeClass
(Context'
(Class
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)))
{ (TypeClassIdentifier)
->(TypeClassIdentifier) }
(TypeVariableIdentifier)
(Statements
(TypeFamily
{ (TypeConstructorIdentifier)
->(TypeConstructorIdentifier) }
(TypeVariableIdentifier)
(KindSignature
(KindListType
(KindFunctionType
(Kind
(Star))
(Kind
(Star)))))
(Empty))))
(TypeClass
(Context'
(Statements
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))))
(TypeClassIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(FunctionalDependency
(Statements
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty)))
(FunctionType
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty))
(Type
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(TypeParameters)
(Empty)))))
(Statements
(TypeSignature
(VariableIdentifier)
(Statements
(TypeVariableIdentifier)
(TypeVariableIdentifier)))))))

View File

@ -0,0 +1,341 @@
(Module
(Empty)
(Statements
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)))
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Context'
(Statements
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))))
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(TypeSignature
(VariableIdentifier)
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))))
(TypeSignature
(VariableIdentifier)
(Context'
(Statements
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))))))
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(Fixity'
(Empty)
(VariableOperator
(InfixVariableIdentifier)))
(Fixity'
(Integer)
(VariableOperator
(InfixVariableIdentifier)))
(Fixity'
(Integer)
(VariableOperator
(InfixVariableIdentifier))
(VariableOperator
(InfixVariableIdentifier))
(VariableOperator
(InfixVariableIdentifier)))
(Fixity'
(Empty)
(VariableOperator
(VariableSymbol)))
(Fixity'
(Integer)
(VariableOperator
(VariableSymbol)))
(Fixity'
(Integer)
(ConstructorOperator
(ConstructorSymbol)))
(Fixity'
(Integer)
(ConstructorOperator
(ConstructorSymbol)))
(Fixity'
(Integer)
(ConstructorOperator
(ConstructorSymbol)))))
(TypeClass
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)))
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(TypeSignature
(VariableIdentifier)
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty)))))
(TypeSignature
(VariableOperator
(VariableSymbol))
(VariableOperator
(VariableSymbol))
(VariableOperator
(VariableSymbol))
(VariableOperator
(VariableSymbol))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty)))))
(TypeSignature
(VariableIdentifier)
(VariableIdentifier)
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))))
(TypeSignature
(VariableIdentifier)
(TypeVariableIdentifier))))
(TypeClass
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)))
(TypeClassIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(TypeSignature
(VariableIdentifier)
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))
(DefaultSignature
(VariableIdentifier)
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))))
(TypeClass
(Empty)
(TypeClassIdentifier)
(AnnotatedTypeVariable
(TypeVariableIdentifier)
(TypeConstructorIdentifier))
(Statements))
(TypeClass
(Empty)
(TypeClassIdentifier)
(AnnotatedTypeVariable
(TypeVariableIdentifier)
(KindFunctionType
(Kind
(KindListType
(KindFunctionType
(Kind
(Star))
(Kind
(Star)))))
(KindFunctionType
(Kind
(Star))
(Kind
(Star)))))
(Statements))
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(TypeSynonym
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(TypeSignature
(TypeConstructorIdentifier)))))
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(TypeSynonym
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(KindSignature
(KindListType
(KindFunctionType
(Kind
(Star))
(Kind
(Star))))))))
(TypeClass
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)))
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(TypeFamily
(TypeConstructorIdentifier)
(TypeVariableIdentifier)
(KindSignature
(KindListType
(KindFunctionType
(Kind
(Star))
(Kind
(Star)))))
(Empty))))
(TypeClass
(Context'
(Statements
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))))
(TypeClassIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(FunctionalDependency
(Statements
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))))
(Statements
(TypeSignature
(VariableIdentifier)
(Statements
(TypeVariableIdentifier)
(TypeVariableIdentifier)))))))

View File

@ -0,0 +1,341 @@
(Module
(Empty)
(Statements
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)))
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Context'
(Statements
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))))
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(TypeSignature
(VariableIdentifier)
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))))
(TypeSignature
(VariableIdentifier)
(Context'
(Statements
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))))))
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(Fixity'
(Empty)
(VariableOperator
(InfixVariableIdentifier)))
(Fixity'
(Integer)
(VariableOperator
(InfixVariableIdentifier)))
(Fixity'
(Integer)
(VariableOperator
(InfixVariableIdentifier))
(VariableOperator
(InfixVariableIdentifier))
(VariableOperator
(InfixVariableIdentifier)))
(Fixity'
(Empty)
(VariableOperator
(VariableSymbol)))
(Fixity'
(Integer)
(VariableOperator
(VariableSymbol)))
(Fixity'
(Integer)
(ConstructorOperator
(ConstructorSymbol)))
(Fixity'
(Integer)
(ConstructorOperator
(ConstructorSymbol)))
(Fixity'
(Integer)
(ConstructorOperator
(ConstructorSymbol)))))
(TypeClass
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)))
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(TypeSignature
(VariableIdentifier)
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty)))))
(TypeSignature
(VariableOperator
(VariableSymbol))
(VariableOperator
(VariableSymbol))
(VariableOperator
(VariableSymbol))
(VariableOperator
(VariableSymbol))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty)))))
(TypeSignature
(VariableIdentifier)
(VariableIdentifier)
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))))
(TypeSignature
(VariableIdentifier)
(TypeVariableIdentifier))))
(TypeClass
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)))
(TypeClassIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(Statements))
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(TypeSignature
(VariableIdentifier)
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))
(DefaultSignature
(VariableIdentifier)
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))))
(TypeClass
(Empty)
(TypeClassIdentifier)
(AnnotatedTypeVariable
(TypeVariableIdentifier)
(TypeConstructorIdentifier))
(Statements))
(TypeClass
(Empty)
(TypeClassIdentifier)
(AnnotatedTypeVariable
(TypeVariableIdentifier)
(KindFunctionType
(Kind
(KindListType
(KindFunctionType
(Kind
(Star))
(Kind
(Star)))))
(KindFunctionType
(Kind
(Star))
(Kind
(Star)))))
(Statements))
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(TypeSynonym
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(TypeSignature
(TypeConstructorIdentifier)))))
(TypeClass
(Empty)
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(TypeSynonym
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(KindSignature
(KindListType
(KindFunctionType
(Kind
(Star))
(Kind
(Star))))))))
(TypeClass
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)))
(TypeClassIdentifier)
(TypeVariableIdentifier)
(Statements
(TypeFamily
(TypeConstructorIdentifier)
(TypeVariableIdentifier)
(KindSignature
(KindListType
(KindFunctionType
(Kind
(Star))
(Kind
(Star)))))
(Empty))))
(TypeClass
(Context'
(Statements
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))))
(TypeClassIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(FunctionalDependency
(Statements
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))))
(Statements
(TypeSignature
(VariableIdentifier)
(Statements
(TypeVariableIdentifier)
(TypeVariableIdentifier)))))))

View File

@ -0,0 +1,76 @@
instance Show Int where
instance Show Int where {}
instance Show Int
instance Show Int a where
instance Show Int a where {}
instance Show Int a
instance Show (Maybe a) where
instance Show (Maybe a) where {}
instance Show (Maybe a)
instance Show (a, b, c) where
instance Show (a, b, c) where {}
instance Show (a, b, c)
instance Show [a] where
instance Show [a] where {}
instance Show [a]
instance Show (a -> b) where
instance Show (a -> b) where {}
instance Show (a -> b)
instance Show Foo where
bar (Foo Baz) (Foo Wix) = EQ
instance Show Foo where {
bar (Foo Baz) (Foo Wix) = EQ
}
instance Show (,) where
instance Show (,) where {}
instance Show (,)
instance Show (Bar, Baz a b) where
instance Show (Bar, Baz a b) where {}
instance Show (Bar, Baz a b)
instance Show [(Bar, Baz a b)] where
instance Show [(Bar, Baz a b)] where {}
instance Show [(Bar, Baz a b)]
instance Show [Bar] where
instance Show [Bar] where {}
instance Show [Bar]
instance Show [Bar a b] where
instance Show [Bar a b] where {}
instance Show [Bar a b]
instance Show [Bar Baz b] where
instance Show [Bar Baz b] where {}
instance Show [Bar Baz b]
instance Show a => Read Int where {}
instance Show a => Read (Maybe a) where {}
instance (Show a, Eq a) => Read (Maybe a) where {}
instance (Foo (Bar [Baz])) => Read (Bar) where {}
instance (Foo (Bar (Baz, Baz))) => Read (Bar) where {}
instance Foo Bar where
baz :: Num b => a -> b -> a
baz' :: (Num a, Num b) => Maybe a -> Either String b -> Maybe (Either String a)
instance Bar a b m => Baz a b m where {}
instance ( Foo (Bar a b '[]) c ) => Baz a b (Bix a b c) where
instance (Bar baz ~ foo) => Wix baz where
toWix = undefined
Wix baz <> Wix baz' = Wix (baz <> baz')
instance Bar (f :+: g) where {}
instance (A :< b, B :< b) => Bar (A c) Foo where {}
instance Foo Bar where
foo D.F{..} = foo
instance Show Foo where
bar (Foo Baz) (Foo Baz) = EQ
instance forall location a b. (Show a, Monad b) => MonadError (Value a) b where
unit = pure . Unit
instance Show A where b = c
-- a
instance Show A where b = c

View File

@ -0,0 +1,76 @@
instance Eq Int where
instance Eq Int where {}
instance Eq Int
instance Eq Int a where
instance Eq Int a where {}
instance Eq Int a
instance Eq (Maybe a) where
instance Eq (Maybe a) where {}
instance Eq (Maybe a)
instance Eq (a, b, c) where
instance Eq (a, b, c) where {}
instance Eq (a, b, c)
instance Eq [a] where
instance Eq [a] where {}
instance Eq [a]
instance Eq (a -> b) where
instance Eq (a -> b) where {}
instance Eq (a -> b)
instance Eq Foo where
bar (Foo Baz) (Foo Wix) = EQ
instance Eq Foo where {
bar (Foo Baz) (Foo Wix) = EQ
}
instance Eq (,) where
instance Eq (,) where {}
instance Eq (,)
instance Eq (Bar, Baz a b) where
instance Eq (Bar, Baz a b) where {}
instance Eq (Bar, Baz a b)
instance Eq [(Bar, Baz a b)] where
instance Eq [(Bar, Baz a b)] where {}
instance Eq [(Bar, Baz a b)]
instance Eq [Bar] where
instance Eq [Bar] where {}
instance Eq [Bar]
instance Eq [Bar a b] where
instance Eq [Bar a b] where {}
instance Eq [Bar a b]
instance Eq [Bar Baz b] where
instance Eq [Bar Baz b] where {}
instance Eq [Bar Baz b]
instance Show a => Read Int where {}
instance Show a => Read (Maybe a) where {}
instance (Show a, Eq a) => Read (Maybe a) where {}
instance (Foo (Bar [Baz])) => Read (Bar) where {}
instance (Foo (Bar (Baz, Baz))) => Read (Bar) where {}
instance Bar Foo where
baz :: Num b => a -> b -> a
baz' :: (Num a, Num b) => Maybe a -> Either String b -> Maybe (Either String a)
instance Foo a b m => Bar a b m where {}
instance ( Foo (Bar a b '[]) c ) => Baz a b (Bix a b c) where
instance (Foo baz ~ bar) => Wix baz where
toWix = undefined
Wix baz <> Wix baz' = Wix (baz <> baz')
instance Foo (f :+: g) where {}
instance (B :< a, A :< b) => Foo (A b) Bar where {}
instance Bar Foo where
foo F.D{..} = bar
instance Show Bar where
bar (Bar Baz) (Bar Baz) = EQ
instance forall location b c. (Show b, Monad c) => ErrorMonad (Value b) c where
unit = pure . Unit
instance Show B where c = d
-- a
instance Show B where c = d

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,737 @@
(Module
(Empty)
(Statements
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Tuple
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Tuple
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Tuple
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements
(Function
(VariableIdentifier)
(ConstructorPattern
(Statements
(ConstructorIdentifier)
(ConstructorIdentifier)))
(ConstructorPattern
(Statements
(ConstructorIdentifier)
(ConstructorIdentifier)))
(Statements
(ConstructorIdentifier)))))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements
(Function
(VariableIdentifier)
(ConstructorPattern
(Statements
(ConstructorIdentifier)
(ConstructorIdentifier)))
(ConstructorPattern
(Statements
(ConstructorIdentifier)
(ConstructorIdentifier)))
(Statements
(ConstructorIdentifier)))))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TupleConstructor))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TupleConstructor))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TupleConstructor))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Tuple
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier)
(TypeVariableIdentifier))
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Tuple
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier)
(TypeVariableIdentifier))
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Tuple
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier)
(TypeVariableIdentifier))
(Empty))))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(Tuple
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier)
(TypeVariableIdentifier))
(Empty)))
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(Tuple
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier)
(TypeVariableIdentifier))
(Empty)))
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(Tuple
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier)
(TypeVariableIdentifier))
(Empty)))
(TypeParameters)
(Empty))))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier)
(TypeVariableIdentifier))
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier)
(TypeVariableIdentifier))
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier)
(TypeVariableIdentifier))
(Empty))))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(Empty))))
(Empty))
(TypeClassInstance
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)))
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements))
(TypeClassInstance
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)))
(TypeClassIdentifier)
(Instance
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)))
(Statements))
(TypeClassInstance
(Context'
(Statements
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))))
(TypeClassIdentifier)
(Instance
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)))
(Statements))
(TypeClassInstance
(Context'
(Class
(TypeClassIdentifier)
(Statements
(TypeConstructorIdentifier)
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))))
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements))
(TypeClassInstance
(Context'
(Class
(TypeClassIdentifier)
(Statements
(TypeConstructorIdentifier)
(Tuple
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))))
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements
(TypeSignature
(VariableIdentifier)
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))))
(TypeSignature
(VariableIdentifier)
(Context'
(Statements
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))))
(FunctionType
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier))
(Empty))
(FunctionType
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters
(Statements
(TypeConstructorIdentifier)
(TypeConstructorIdentifier)
(TypeVariableIdentifier)))
(Empty)))))))
(TypeClassInstance
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)))
(TypeClassIdentifier)
(Instance
(Statements
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)))
(Statements))
(TypeClassInstance
(Context'
(Class
(TypeClassIdentifier)
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(QuotedName
(ListConstructor)))
(TypeVariableIdentifier)))
(TypeClassIdentifier)
(Instance
(Statements
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier))))
(Statements))
(TypeClassInstance
(Context'
(EqualityConstraint
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(TypeVariableIdentifier)))
(TypeClassIdentifier)
(Instance
(TypeVariableIdentifier))
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))
(Function
(ConstructorPattern
(Statements
(ConstructorIdentifier)
(VariableIdentifier)))
(VariableOperator
(VariableSymbol))
(ConstructorPattern
(Statements
(ConstructorIdentifier)
(VariableIdentifier)))
(Statements
(App
(ConstructorIdentifier)
(Empty)
(InfixOperatorApp
(VariableIdentifier)
(Empty)
(VariableOperator
(VariableSymbol))
(VariableIdentifier)))))))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(InfixOperatorPattern
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(ConstructorOperator
(ConstructorSymbol))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(Context'
(Statements
(Statements
(TypeConstructorIdentifier)
(ConstructorOperator
(ConstructorSymbol))
(TypeVariableIdentifier))
(Statements
(TypeConstructorIdentifier)
(ConstructorOperator
(ConstructorSymbol))
(TypeVariableIdentifier))))
(TypeClassIdentifier)
(Instance
(Statements
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(TypeConstructorIdentifier)))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements
(Function
(VariableIdentifier)
(LabeledPattern
(Statements
(QualifiedConstructorIdentifier
(ModuleIdentifier)
(ConstructorIdentifier))
(RecordWildCards)))
(Statements
(VariableIdentifier)))))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements
(Function
(VariableIdentifier)
(ConstructorPattern
(Statements
(ConstructorIdentifier)
(ConstructorIdentifier)))
(ConstructorPattern
(Statements
(ConstructorIdentifier)
(ConstructorIdentifier)))
(Statements
(ConstructorIdentifier)))))
(TypeClassInstance
(ScopedTypeVariables
(Statements
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)))
(Context'
(Statements
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))))
(TypeClassIdentifier)
(Instance
(Statements
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(TypeVariableIdentifier)))
(Statements
(Function
(VariableIdentifier)
(Statements
(InfixOperatorApp
(VariableIdentifier)
(Empty)
(VariableOperator
(VariableSymbol))
(ConstructorIdentifier))))))
(Context
(Comment)
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier))))))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))))))

View File

@ -0,0 +1,737 @@
(Module
(Empty)
(Statements
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Tuple
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Tuple
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Tuple
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements
(Function
(VariableIdentifier)
(ConstructorPattern
(Statements
(ConstructorIdentifier)
(ConstructorIdentifier)))
(ConstructorPattern
(Statements
(ConstructorIdentifier)
(ConstructorIdentifier)))
(Statements
(ConstructorIdentifier)))))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements
(Function
(VariableIdentifier)
(ConstructorPattern
(Statements
(ConstructorIdentifier)
(ConstructorIdentifier)))
(ConstructorPattern
(Statements
(ConstructorIdentifier)
(ConstructorIdentifier)))
(Statements
(ConstructorIdentifier)))))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TupleConstructor))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TupleConstructor))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TupleConstructor))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Tuple
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier)
(TypeVariableIdentifier))
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Tuple
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier)
(TypeVariableIdentifier))
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Tuple
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier)
(TypeVariableIdentifier))
(Empty))))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(Tuple
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier)
(TypeVariableIdentifier))
(Empty)))
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(Tuple
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier)
(TypeVariableIdentifier))
(Empty)))
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(Tuple
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier)
(TypeVariableIdentifier))
(Empty)))
(TypeParameters)
(Empty))))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier)
(TypeVariableIdentifier))
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier)
(TypeVariableIdentifier))
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier)
(TypeVariableIdentifier))
(Empty))))
(Empty))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(Empty))))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(Empty))))
(Empty))
(TypeClassInstance
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)))
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements))
(TypeClassInstance
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)))
(TypeClassIdentifier)
(Instance
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)))
(Statements))
(TypeClassInstance
(Context'
(Statements
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))))
(TypeClassIdentifier)
(Instance
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)))
(Statements))
(TypeClassInstance
(Context'
(Class
(TypeClassIdentifier)
(Statements
(TypeConstructorIdentifier)
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))))
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements))
(TypeClassInstance
(Context'
(Class
(TypeClassIdentifier)
(Statements
(TypeConstructorIdentifier)
(Tuple
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))))
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements
(TypeSignature
(VariableIdentifier)
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(FunctionType
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty)))))
(TypeSignature
(VariableIdentifier)
(Context'
(Statements
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))))
(FunctionType
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeVariableIdentifier))
(Empty))
(FunctionType
(Type
(TypeConstructorIdentifier)
(TypeParameters
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(Empty))
(Type
(TypeConstructorIdentifier)
(TypeParameters
(Statements
(TypeConstructorIdentifier)
(TypeConstructorIdentifier)
(TypeVariableIdentifier)))
(Empty)))))))
(TypeClassInstance
(Context'
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)))
(TypeClassIdentifier)
(Instance
(Statements
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)))
(Statements))
(TypeClassInstance
(Context'
(Class
(TypeClassIdentifier)
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(QuotedName
(ListConstructor)))
(TypeVariableIdentifier)))
(TypeClassIdentifier)
(Instance
(Statements
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier))))
(Statements))
(TypeClassInstance
(Context'
(EqualityConstraint
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(TypeVariableIdentifier)))
(TypeClassIdentifier)
(Instance
(TypeVariableIdentifier))
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))
(Function
(ConstructorPattern
(Statements
(ConstructorIdentifier)
(VariableIdentifier)))
(VariableOperator
(VariableSymbol))
(ConstructorPattern
(Statements
(ConstructorIdentifier)
(VariableIdentifier)))
(Statements
(App
(ConstructorIdentifier)
(Empty)
(InfixOperatorApp
(VariableIdentifier)
(Empty)
(VariableOperator
(VariableSymbol))
(VariableIdentifier)))))))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(InfixOperatorPattern
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))
(ConstructorOperator
(ConstructorSymbol))
(Type
(TypeVariableIdentifier)
(TypeParameters)
(Empty))))
(Statements))
(TypeClassInstance
(Context'
(Statements
(Statements
(TypeConstructorIdentifier)
(ConstructorOperator
(ConstructorSymbol))
(TypeVariableIdentifier))
(Statements
(TypeConstructorIdentifier)
(ConstructorOperator
(ConstructorSymbol))
(TypeVariableIdentifier))))
(TypeClassIdentifier)
(Instance
(Statements
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(TypeConstructorIdentifier)))
(Statements))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements
(Function
(VariableIdentifier)
(LabeledPattern
(Statements
(QualifiedConstructorIdentifier
(ModuleIdentifier)
(ConstructorIdentifier))
(RecordWildCards)))
(Statements
(VariableIdentifier)))))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements
(Function
(VariableIdentifier)
(ConstructorPattern
(Statements
(ConstructorIdentifier)
(ConstructorIdentifier)))
(ConstructorPattern
(Statements
(ConstructorIdentifier)
(ConstructorIdentifier)))
(Statements
(ConstructorIdentifier)))))
(TypeClassInstance
(ScopedTypeVariables
(Statements
(TypeVariableIdentifier)
(TypeVariableIdentifier)
(TypeVariableIdentifier)))
(Context'
(Statements
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))
(Class
(TypeClassIdentifier)
(TypeVariableIdentifier))))
(TypeClassIdentifier)
(Instance
(Statements
(Statements
(TypeConstructorIdentifier)
(TypeVariableIdentifier))
(TypeVariableIdentifier)))
(Statements
(Function
(VariableIdentifier)
(Statements
(InfixOperatorApp
(VariableIdentifier)
(Empty)
(VariableOperator
(VariableSymbol))
(ConstructorIdentifier))))))
(Context
(Comment)
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier))))))
(TypeClassInstance
(TypeClassIdentifier)
(Instance
(TypeConstructorIdentifier))
(Statements
(Function
(VariableIdentifier)
(Statements
(VariableIdentifier)))))))

View File

@ -0,0 +1,11 @@
type family Foo bar where
Bar = Wiz
Baz = 'Custom
Bar.Baz a = 'Custom
Bar.Baz (A a) = 'Custom
type family F a :: *
type instance F [Int] = Int
type instance F String = Char
type family Bar (baz :: [(* -> *) -> Wiz]) (foo :: * -> *) :: Wiz where

View File

@ -0,0 +1,11 @@
type family Baz bar where
Baz = Wiz
Bar = 'Custom
Baz.Bar a = 'Custom
Baz.Bar (B b) = 'Custom
type family F b :: *
type instance F [String] = Int
type instance F Char = Char
type family Baz (bar :: [(* -> *) -> Waz]) (faz :: * -> *) :: Waz where

View File

@ -0,0 +1,107 @@
(Module
(Empty)
(Statements
(TypeFamily
{ (TypeConstructorIdentifier)
->(TypeConstructorIdentifier) }
(TypeVariableIdentifier)
(Empty)
(Statements
{-(Function
{-(ConstructorIdentifier)-}
{-(Statements
{-(ConstructorIdentifier)-})-})-}
(Function
(ConstructorIdentifier)
(Statements
{+(ConstructorIdentifier)+}
{-(QuotedName
{-(TypeConstructorIdentifier)-})-}))
{+(Function
{+(ConstructorIdentifier)+}
{+(Statements
{+(QuotedName
{+(TypeConstructorIdentifier)+})+})+})+}
(Function
(ConstructorPattern
(Statements
(QualifiedConstructorIdentifier
{ (ModuleIdentifier)
->(ModuleIdentifier) }
{ (ConstructorIdentifier)
->(ConstructorIdentifier) })
(VariableIdentifier)))
(Statements
(QuotedName
(TypeConstructorIdentifier))))
(Function
(ConstructorPattern
(Statements
(QualifiedConstructorIdentifier
{ (ModuleIdentifier)
->(ModuleIdentifier) }
{ (ConstructorIdentifier)
->(ConstructorIdentifier) })
(ConstructorPattern
(Statements
{ (ConstructorIdentifier)
->(ConstructorIdentifier) }
{ (VariableIdentifier)
->(VariableIdentifier) }))))
(Statements
(QuotedName
(TypeConstructorIdentifier))))))
(TypeFamily
(TypeConstructorIdentifier)
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(KindSignature
(Star))
(Empty))
(TypeInstance
(Statements
(TypeConstructorIdentifier)
(Array
(Type
{ (TypeConstructorIdentifier)
->(TypeConstructorIdentifier) }
(TypeParameters)
(Empty))))
(TypePattern
(TypeConstructorIdentifier)))
(TypeInstance
(Statements
(TypeConstructorIdentifier)
{ (TypeConstructorIdentifier)
->(TypeConstructorIdentifier) })
(TypePattern
(TypeConstructorIdentifier)))
(TypeFamily
{ (TypeConstructorIdentifier)
->(TypeConstructorIdentifier) }
(AnnotatedTypeVariable
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(KindListType
(KindFunctionType
(Kind
(KindParenthesizedConstructor
(KindFunctionType
(Kind
(Star))
(Kind
(Star)))))
{ (TypeConstructorIdentifier)
->(TypeConstructorIdentifier) })))
(AnnotatedTypeVariable
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(KindFunctionType
(Kind
(Star))
(Kind
(Star))))
(TypeSignature
{ (TypeConstructorIdentifier)
->(TypeConstructorIdentifier) })
(Statements))))

View File

@ -0,0 +1,107 @@
(Module
(Empty)
(Statements
(TypeFamily
{ (TypeConstructorIdentifier)
->(TypeConstructorIdentifier) }
(TypeVariableIdentifier)
(Empty)
(Statements
{-(Function
{-(ConstructorIdentifier)-}
{-(Statements
{-(ConstructorIdentifier)-})-})-}
(Function
(ConstructorIdentifier)
(Statements
{+(ConstructorIdentifier)+}
{-(QuotedName
{-(TypeConstructorIdentifier)-})-}))
{+(Function
{+(ConstructorIdentifier)+}
{+(Statements
{+(QuotedName
{+(TypeConstructorIdentifier)+})+})+})+}
(Function
(ConstructorPattern
(Statements
(QualifiedConstructorIdentifier
{ (ModuleIdentifier)
->(ModuleIdentifier) }
{ (ConstructorIdentifier)
->(ConstructorIdentifier) })
(VariableIdentifier)))
(Statements
(QuotedName
(TypeConstructorIdentifier))))
(Function
(ConstructorPattern
(Statements
(QualifiedConstructorIdentifier
{ (ModuleIdentifier)
->(ModuleIdentifier) }
{ (ConstructorIdentifier)
->(ConstructorIdentifier) })
(ConstructorPattern
(Statements
{ (ConstructorIdentifier)
->(ConstructorIdentifier) }
{ (VariableIdentifier)
->(VariableIdentifier) }))))
(Statements
(QuotedName
(TypeConstructorIdentifier))))))
(TypeFamily
(TypeConstructorIdentifier)
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(KindSignature
(Star))
(Empty))
(TypeInstance
(Statements
(TypeConstructorIdentifier)
(Array
(Type
{ (TypeConstructorIdentifier)
->(TypeConstructorIdentifier) }
(TypeParameters)
(Empty))))
(TypePattern
(TypeConstructorIdentifier)))
(TypeInstance
(Statements
(TypeConstructorIdentifier)
{ (TypeConstructorIdentifier)
->(TypeConstructorIdentifier) })
(TypePattern
(TypeConstructorIdentifier)))
(TypeFamily
{ (TypeConstructorIdentifier)
->(TypeConstructorIdentifier) }
(AnnotatedTypeVariable
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(KindListType
(KindFunctionType
(Kind
(KindParenthesizedConstructor
(KindFunctionType
(Kind
(Star))
(Kind
(Star)))))
{ (TypeConstructorIdentifier)
->(TypeConstructorIdentifier) })))
(AnnotatedTypeVariable
{ (TypeVariableIdentifier)
->(TypeVariableIdentifier) }
(KindFunctionType
(Kind
(Star))
(Kind
(Star))))
(TypeSignature
{ (TypeConstructorIdentifier)
->(TypeConstructorIdentifier) })
(Statements))))

View File

@ -0,0 +1,86 @@
(Module
(Empty)
(Statements
(TypeFamily
(TypeConstructorIdentifier)
(TypeVariableIdentifier)
(Empty)
(Statements
(Function
(ConstructorIdentifier)
(Statements
(ConstructorIdentifier)))
(Function
(ConstructorIdentifier)
(Statements
(QuotedName
(TypeConstructorIdentifier))))
(Function
(ConstructorPattern
(Statements
(QualifiedConstructorIdentifier
(ModuleIdentifier)
(ConstructorIdentifier))
(VariableIdentifier)))
(Statements
(QuotedName
(TypeConstructorIdentifier))))
(Function
(ConstructorPattern
(Statements
(QualifiedConstructorIdentifier
(ModuleIdentifier)
(ConstructorIdentifier))
(ConstructorPattern
(Statements
(ConstructorIdentifier)
(VariableIdentifier)))))
(Statements
(QuotedName
(TypeConstructorIdentifier))))))
(TypeFamily
(TypeConstructorIdentifier)
(TypeVariableIdentifier)
(KindSignature
(Star))
(Empty))
(TypeInstance
(Statements
(TypeConstructorIdentifier)
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))
(TypePattern
(TypeConstructorIdentifier)))
(TypeInstance
(Statements
(TypeConstructorIdentifier)
(TypeConstructorIdentifier))
(TypePattern
(TypeConstructorIdentifier)))
(TypeFamily
(TypeConstructorIdentifier)
(AnnotatedTypeVariable
(TypeVariableIdentifier)
(KindListType
(KindFunctionType
(Kind
(KindParenthesizedConstructor
(KindFunctionType
(Kind
(Star))
(Kind
(Star)))))
(TypeConstructorIdentifier))))
(AnnotatedTypeVariable
(TypeVariableIdentifier)
(KindFunctionType
(Kind
(Star))
(Kind
(Star))))
(TypeSignature
(TypeConstructorIdentifier))
(Statements))))

View File

@ -0,0 +1,86 @@
(Module
(Empty)
(Statements
(TypeFamily
(TypeConstructorIdentifier)
(TypeVariableIdentifier)
(Empty)
(Statements
(Function
(ConstructorIdentifier)
(Statements
(ConstructorIdentifier)))
(Function
(ConstructorIdentifier)
(Statements
(QuotedName
(TypeConstructorIdentifier))))
(Function
(ConstructorPattern
(Statements
(QualifiedConstructorIdentifier
(ModuleIdentifier)
(ConstructorIdentifier))
(VariableIdentifier)))
(Statements
(QuotedName
(TypeConstructorIdentifier))))
(Function
(ConstructorPattern
(Statements
(QualifiedConstructorIdentifier
(ModuleIdentifier)
(ConstructorIdentifier))
(ConstructorPattern
(Statements
(ConstructorIdentifier)
(VariableIdentifier)))))
(Statements
(QuotedName
(TypeConstructorIdentifier))))))
(TypeFamily
(TypeConstructorIdentifier)
(TypeVariableIdentifier)
(KindSignature
(Star))
(Empty))
(TypeInstance
(Statements
(TypeConstructorIdentifier)
(Array
(Type
(TypeConstructorIdentifier)
(TypeParameters)
(Empty))))
(TypePattern
(TypeConstructorIdentifier)))
(TypeInstance
(Statements
(TypeConstructorIdentifier)
(TypeConstructorIdentifier))
(TypePattern
(TypeConstructorIdentifier)))
(TypeFamily
(TypeConstructorIdentifier)
(AnnotatedTypeVariable
(TypeVariableIdentifier)
(KindListType
(KindFunctionType
(Kind
(KindParenthesizedConstructor
(KindFunctionType
(Kind
(Star))
(Kind
(Star)))))
(TypeConstructorIdentifier))))
(AnnotatedTypeVariable
(TypeVariableIdentifier)
(KindFunctionType
(Kind
(Star))
(Kind
(Star))))
(TypeSignature
(TypeConstructorIdentifier))
(Statements))))

View File

@ -115,14 +115,11 @@
{+(TypeConstructorIdentifier)+} {+(TypeConstructorIdentifier)+}
{+(TypeVariableIdentifier)+})+})+} {+(TypeVariableIdentifier)+})+})+}
{+(Empty)+})+})+})+})+})+} {+(Empty)+})+})+})+})+})+}
(TypeSynonym {+(TypeSynonym
(Statements {+(Statements
{ (TypeConstructorIdentifier) {+(TypeConstructorIdentifier)+}
->(TypeConstructorIdentifier) } {+(TypeConstructorIdentifier)+})+}
{+(TypeConstructorIdentifier)+}) {+(TextElement)+})+}
{ (TypePattern
{-(FunctionConstructor)-})
->(TextElement) })
{+(TypeSynonym {+(TypeSynonym
{+(Statements {+(Statements
{+(TypeConstructorIdentifier)+} {+(TypeConstructorIdentifier)+}
@ -171,6 +168,11 @@
{+(TypeConstructorIdentifier)+} {+(TypeConstructorIdentifier)+}
{+(TypeVariableIdentifier)+} {+(TypeVariableIdentifier)+}
{+(TypeVariableIdentifier)+})+})+})+})+} {+(TypeVariableIdentifier)+})+})+})+})+}
{-(TypeSynonym
{-(Statements
{-(TypeConstructorIdentifier)-})-}
{-(TypePattern
{-(FunctionConstructor)-})-})-}
{-(TypeSynonym {-(TypeSynonym
{-(Statements {-(Statements
{-(TypeConstructorIdentifier)-})-} {-(TypeConstructorIdentifier)-})-}

@ -1 +1 @@
Subproject commit 643f8a2856f9d9a4cf25f3b0eb844aa46aafc535 Subproject commit 6176c8c8e7c59760a881a2487d81bcbdb26efe9c