module Hydra.Impl.Haskell.Sources.Ext.Haskell.Ast where
import Hydra.Impl.Haskell.Sources.Core
import Hydra.All
import Hydra.Impl.Haskell.Dsl.Types as Types
import Hydra.Impl.Haskell.Dsl.Standard
haskellAstModule :: Module Meta
haskellAstModule :: Module Meta
haskellAstModule = forall m.
Namespace -> [Element m] -> [Module m] -> Maybe String -> Module m
Module Namespace
ns [Element Meta]
elements [] forall a b. (a -> b) -> a -> b
$
forall a. a -> Maybe a
Just String
"A Haskell syntax model, loosely based on Language.Haskell.Tools.AST"
where
ns :: Namespace
ns = String -> Namespace
Namespace String
"hydra/ext/haskell/ast"
def :: String -> Type m -> Element m
def = forall m. Namespace -> String -> Type m -> Element m
datatype Namespace
ns
ast :: String -> Type m
ast = forall m. Namespace -> String -> Type m
nsref Namespace
ns
elements :: [Element Meta]
elements = [
forall {m}. String -> Type m -> Element m
def String
"Alternative" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A pattern-matching alternative" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"pattern"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Pattern",
String
"rhs"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"CaseRhs",
String
"binds"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
optional forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"LocalBindings"],
forall {m}. String -> Type m -> Element m
def String
"Assertion" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A type assertion" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"name"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Name",
String
"types"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Type"],
forall {m}. String -> Type m -> Element m
def String
"CaseRhs" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"The right-hand side of a pattern-matching alternative" forall a b. (a -> b) -> a -> b
$
forall {m}. String -> Type m
ast String
"Expression",
forall {m}. String -> Type m -> Element m
def String
"Constructor" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A data constructor" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
union [
String
"ordinary"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Constructor.Ordinary",
String
"record"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Constructor.Record"],
forall {m}. String -> Type m -> Element m
def String
"Constructor.Ordinary" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"An ordinary (positional) data constructor" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"name"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Name",
String
"fields"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Type"],
forall {m}. String -> Type m -> Element m
def String
"Constructor.Record" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A record-style data constructor" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"name"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Name",
String
"fields"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"FieldWithComments"],
forall {m}. String -> Type m -> Element m
def String
"ConstructorWithComments" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A data constructor together with any comments" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"body"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Constructor",
String
"comments"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
optional forall m. Type m
string],
forall {m}. String -> Type m -> Element m
def String
"DataDeclaration" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A data type declaration" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"keyword"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"DataDeclaration.Keyword",
String
"context"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Assertion",
String
"head"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"DeclarationHead",
String
"constructors"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"ConstructorWithComments",
String
"deriving"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Deriving"],
forall {m}. String -> Type m -> Element m
def String
"DataDeclaration.Keyword" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"The 'data' versus 'newtype keyword" forall a b. (a -> b) -> a -> b
$
forall m. [String] -> Type m
enum [String
"data", String
"newtype"],
forall {m}. String -> Type m -> Element m
def String
"DeclarationWithComments" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A data declaration together with any comments" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"body"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Declaration",
String
"comments"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
optional forall m. Type m
string],
forall {m}. String -> Type m -> Element m
def String
"Declaration" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A data or value declaration" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
union [
String
"data"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"DataDeclaration",
String
"type"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"TypeDeclaration",
String
"valueBinding"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"ValueBinding",
String
"typedBinding"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"TypedBinding"],
forall {m}. String -> Type m -> Element m
def String
"DeclarationHead" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"The left-hand side of a declaration" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
union [
String
"application"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"DeclarationHead.Application",
String
"parens"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"DeclarationHead",
String
"simple"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Name"],
forall {m}. String -> Type m -> Element m
def String
"DeclarationHead.Application" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"An application-style declaration head" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"function"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"DeclarationHead",
String
"operand"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Variable"],
forall {m}. String -> Type m -> Element m
def String
"Deriving" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A 'deriving' statement" forall a b. (a -> b) -> a -> b
$
forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Name",
forall {m}. String -> Type m -> Element m
def String
"Export" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"An export statement" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
union [
String
"declaration"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"ImportExportSpec",
String
"module"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"ModuleName"],
forall {m}. String -> Type m -> Element m
def String
"Expression" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A data expression" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
union [
String
"application"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression.Application",
String
"case"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression.Case",
String
"constructRecord"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression.ConstructRecord",
String
"do"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Statement",
String
"if"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression.If",
String
"infixApplication"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression.InfixApplication",
String
"literal"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Literal",
String
"lambda"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression.Lambda",
String
"leftSection"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression.Section",
String
"let"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression.Let",
String
"list"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Expression",
String
"parens"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression",
String
"prefixApplication"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression.PrefixApplication",
String
"rightSection"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression.Section",
String
"tuple"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Expression",
String
"typeSignature"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression.TypeSignature",
String
"updateRecord"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression.UpdateRecord",
String
"variable"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Name"],
forall {m}. String -> Type m -> Element m
def String
"Expression.Application" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"An application expression" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"function"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression",
String
"argument"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression"],
forall {m}. String -> Type m -> Element m
def String
"Expression.Case" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A case expression" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"case"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression",
String
"alternatives"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Alternative"],
forall {m}. String -> Type m -> Element m
def String
"Expression.ConstructRecord" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A record constructor expression" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"name"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Name",
String
"fields"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"FieldUpdate"],
forall {m}. String -> Type m -> Element m
def String
"Expression.If" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"An 'if' expression" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"condition"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression",
String
"then"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression",
String
"else"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression"],
forall {m}. String -> Type m -> Element m
def String
"Expression.InfixApplication" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"An infix application expression" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"lhs"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression",
String
"operator"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Operator",
String
"rhs"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression"],
forall {m}. String -> Type m -> Element m
def String
"Expression.Lambda" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A lambda expression" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"bindings"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Pattern",
String
"inner"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression"],
forall {m}. String -> Type m -> Element m
def String
"Expression.Let" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A 'let' expression" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"bindings"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Pattern",
String
"inner"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression"],
forall {m}. String -> Type m -> Element m
def String
"Expression.PrefixApplication" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A prefix expression" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"operator"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Operator",
String
"rhs"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression"],
forall {m}. String -> Type m -> Element m
def String
"Expression.Section" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A section expression" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"operator"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Operator",
String
"expression"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression"],
forall {m}. String -> Type m -> Element m
def String
"Expression.TypeSignature" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A type signature expression" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"inner"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression",
String
"type"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Type"],
forall {m}. String -> Type m -> Element m
def String
"Expression.UpdateRecord" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"An update record expression" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"inner"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression",
String
"fields"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"FieldUpdate"],
forall {m}. String -> Type m -> Element m
def String
"Field" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A field (name/type pair)" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"name"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Name",
String
"type"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Type"],
forall {m}. String -> Type m -> Element m
def String
"FieldWithComments" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A field together with any comments" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"field"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Field",
String
"comments"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
optional forall m. Type m
string],
forall {m}. String -> Type m -> Element m
def String
"FieldUpdate" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A field name and value" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"name"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Name",
String
"value"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Expression"],
forall {m}. String -> Type m -> Element m
def String
"Import" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"An import statement" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"qualified"forall m. String -> Type m -> FieldType m
>: forall m. Type m
boolean,
String
"module"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"ModuleName",
String
"as"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
optional forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"ModuleName",
String
"spec"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
optional forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Import.Spec"],
forall {m}. String -> Type m -> Element m
def String
"Import.Spec" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"An import specification" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
union [
String
"list"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"ImportExportSpec",
String
"hiding"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"ImportExportSpec"],
forall {m}. String -> Type m -> Element m
def String
"ImportModifier" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"An import modifier ('pattern' or 'type')" forall a b. (a -> b) -> a -> b
$
forall m. [String] -> Type m
enum [String
"pattern", String
"type"],
forall {m}. String -> Type m -> Element m
def String
"ImportExportSpec" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"An import or export specification" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"modifier"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
optional forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"ImportModifier",
String
"name"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Name",
String
"subspec"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
optional forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"ImportExportSpec.Subspec"],
forall {m}. String -> Type m -> Element m
def String
"ImportExportSpec.Subspec" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
union [
String
"all"forall m. String -> Type m -> FieldType m
>: forall m. Type m
unit,
String
"list"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Name"],
forall {m}. String -> Type m -> Element m
def String
"Literal" forall a b. (a -> b) -> a -> b
$
String -> Type Meta -> Type Meta
doc String
"A literal value" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
union [
String
"char"forall m. String -> Type m -> FieldType m
>: forall m. Type m
uint16,
String
"double"forall m. String -> Type m -> FieldType m
>: forall m. Type m
float64,
String
"float"forall m. String -> Type m -> FieldType m
>: forall m. Type m
float32,
String
"int"forall m. String -> Type m -> FieldType m
>: forall m. Type m
int32,
String
"integer"forall m. String -> Type m -> FieldType m
>: forall m. Type m
bigint,
String
"string"forall m. String -> Type m -> FieldType m
>: forall m. Type m
string],
forall {m}. String -> Type m -> Element m
def String
"LocalBinding" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
union [
String
"signature"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"TypeSignature",
String
"value"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"ValueBinding"],
forall {m}. String -> Type m -> Element m
def String
"LocalBindings" forall a b. (a -> b) -> a -> b
$
forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"LocalBinding",
forall {m}. String -> Type m -> Element m
def String
"Module" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"head"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
optional forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"ModuleHead",
String
"imports"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Import",
String
"declarations"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"DeclarationWithComments"],
forall {m}. String -> Type m -> Element m
def String
"ModuleHead" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"comments"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
optional forall m. Type m
string,
String
"name"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"ModuleName",
String
"exports"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Export"],
forall {m}. String -> Type m -> Element m
def String
"ModuleName"
forall m. Type m
string,
forall {m}. String -> Type m -> Element m
def String
"Name" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
union [
String
"implicit"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"QualifiedName",
String
"normal"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"QualifiedName",
String
"parens"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"QualifiedName"],
forall {m}. String -> Type m -> Element m
def String
"NamePart"
forall m. Type m
string,
forall {m}. String -> Type m -> Element m
def String
"Operator" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
union [
String
"backtick"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"QualifiedName",
String
"normal"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"QualifiedName"],
forall {m}. String -> Type m -> Element m
def String
"Pattern" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
union [
String
"application"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Pattern.Application",
String
"as"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Pattern.As",
String
"list"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Pattern",
String
"literal"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Literal",
String
"name"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Name",
String
"parens"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Pattern",
String
"record"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Pattern.Record",
String
"tuple"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Pattern",
String
"typed"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Pattern.Typed",
String
"wildcard"forall m. String -> Type m -> FieldType m
>: forall m. Type m
unit],
forall {m}. String -> Type m -> Element m
def String
"Pattern.Application" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"name"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Name",
String
"args"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Pattern"],
forall {m}. String -> Type m -> Element m
def String
"Pattern.As" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"name"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Name",
String
"inner"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Pattern"],
forall {m}. String -> Type m -> Element m
def String
"Pattern.Record" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"name"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Name",
String
"fields"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"PatternField"],
forall {m}. String -> Type m -> Element m
def String
"Pattern.Typed" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"inner"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Pattern",
String
"type"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Type"],
forall {m}. String -> Type m -> Element m
def String
"PatternField" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"name"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Name",
String
"pattern"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Pattern"],
forall {m}. String -> Type m -> Element m
def String
"QualifiedName" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"qualifiers"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"NamePart",
String
"unqualified"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"NamePart"],
forall {m}. String -> Type m -> Element m
def String
"RightHandSide" forall a b. (a -> b) -> a -> b
$
forall {m}. String -> Type m
ast String
"Expression",
forall {m}. String -> Type m -> Element m
def String
"Statement" forall a b. (a -> b) -> a -> b
$
forall {m}. String -> Type m
ast String
"Expression",
forall {m}. String -> Type m -> Element m
def String
"Type" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
union [
String
"application"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Type.Application",
String
"function"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Type.Function",
String
"infix"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Type.Infix",
String
"list"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Type",
String
"parens"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Type",
String
"tuple"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
list forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"Type",
String
"variable"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Name"],
forall {m}. String -> Type m -> Element m
def String
"Type.Application" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"context"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Type",
String
"argument"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Type"],
forall {m}. String -> Type m -> Element m
def String
"Type.Function" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"domain"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Type",
String
"codomain"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Type"],
forall {m}. String -> Type m -> Element m
def String
"Type.Infix" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"lhs"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Type",
String
"operator"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Operator",
String
"rhs"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Operator"],
forall {m}. String -> Type m -> Element m
def String
"TypeDeclaration" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"name"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"DeclarationHead",
String
"type"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Type"],
forall {m}. String -> Type m -> Element m
def String
"TypeSignature" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"name"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Name",
String
"type"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Type"],
forall {m}. String -> Type m -> Element m
def String
"TypedBinding" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"typeSignature"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"TypeSignature",
String
"valueBinding"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"ValueBinding"],
forall {m}. String -> Type m -> Element m
def String
"ValueBinding" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
union [
String
"simple"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"ValueBinding.Simple"],
forall {m}. String -> Type m -> Element m
def String
"ValueBinding.Simple" forall a b. (a -> b) -> a -> b
$
forall m. [FieldType m] -> Type m
record [
String
"pattern"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"Pattern",
String
"rhs"forall m. String -> Type m -> FieldType m
>: forall {m}. String -> Type m
ast String
"RightHandSide",
String
"localBindings"forall m. String -> Type m -> FieldType m
>: forall m. Type m -> Type m
optional forall a b. (a -> b) -> a -> b
$ forall {m}. String -> Type m
ast String
"LocalBindings"],
forall {m}. String -> Type m -> Element m
def String
"Variable" forall a b. (a -> b) -> a -> b
$
forall {m}. String -> Type m
ast String
"Name"]