gleamunison/ast
Types
pub type AbilityDeclaration {
AbilityDeclaration(
name: identity.LocalVar,
operations: List(Operation),
)
}
Constructors
-
AbilityDeclaration( name: identity.LocalVar, operations: List(Operation), )
pub type AbilityRef {
AbilityRef(decl: identity.DefinitionRef)
}
Constructors
-
AbilityRef(decl: identity.DefinitionRef)
pub type BuiltinType {
IntType
FloatType
TextType
BoolType
ListType
HandlerType
}
Constructors
-
IntType -
FloatType -
TextType -
BoolType -
ListType -
HandlerType
pub type Case {
Case(pattern: Pattern, guard: option.Option(Guard), body: Term)
}
Constructors
-
Case(pattern: Pattern, guard: option.Option(Guard), body: Term)
pub type Constructor {
Constructor(name: identity.LocalVar, args: List(TypeRef))
}
Constructors
-
Constructor(name: identity.LocalVar, args: List(TypeRef))
pub type Definition {
TermDef(term: Term, typ: Type)
TypeDef(TypeDeclaration)
AbilityDecl(AbilityDeclaration)
}
Constructors
-
-
TypeDef(TypeDeclaration) -
AbilityDecl(AbilityDeclaration)
pub type Operation {
Operation(
name: identity.LocalVar,
inputs: List(TypeRef),
output: TypeRef,
)
}
Constructors
-
Operation( name: identity.LocalVar, inputs: List(TypeRef), output: TypeRef, )
pub type Pattern {
PatVar(identity.LocalVar)
PatInt(Int)
PatText(BitArray)
PatCons(head: identity.LocalVar, tail: identity.LocalVar)
PatEmptyList
PatAs(bound: identity.LocalVar, inner: Pattern)
PatConstructor(
ctor_ref: identity.DefinitionRef,
args: List(Pattern),
)
}
Constructors
-
PatVar(identity.LocalVar) -
PatInt(Int) -
PatText(BitArray) -
PatCons(head: identity.LocalVar, tail: identity.LocalVar) -
PatEmptyList -
PatAs(bound: identity.LocalVar, inner: Pattern) -
PatConstructor( ctor_ref: identity.DefinitionRef, args: List(Pattern), )
pub type ReqElement {
Concrete(AbilityRef)
ReqVar(index: Int)
}
Constructors
-
Concrete(AbilityRef) -
ReqVar(index: Int)
pub type Requirement {
Required(abilities: List(ReqElement))
}
Constructors
-
Required(abilities: List(ReqElement))
pub type Term {
RefTo(identity.DefinitionRef)
LocalVarRef(identity.LocalVar)
Int(Int)
Float(Float)
Text(BitArray)
List(List(Term))
Apply(function: Term, arg: Term)
Lambda(binder: identity.LocalVar, body: Term)
Let(binder: identity.LocalVar, value: Term, body: Term)
Match(scrutinee: Term, cases: List(Case))
Do(
ability: identity.DefinitionRef,
operation: identity.LocalVar,
args: List(Term),
)
Handle(
computation: Term,
handler: Term,
ability: identity.DefinitionRef,
)
Construct(ctor_ref: identity.DefinitionRef, args: List(Term))
Hole
Use(binder: identity.LocalVar, call: Term, body: Term)
}
Constructors
-
RefTo(identity.DefinitionRef) -
LocalVarRef(identity.LocalVar) -
Int(Int) -
Float(Float) -
Text(BitArray) -
List(List(Term)) -
-
Lambda(binder: identity.LocalVar, body: Term) -
Let(binder: identity.LocalVar, value: Term, body: Term) -
-
Do( ability: identity.DefinitionRef, operation: identity.LocalVar, args: List(Term), ) -
Handle( computation: Term, handler: Term, ability: identity.DefinitionRef, ) -
Construct(ctor_ref: identity.DefinitionRef, args: List(Term)) -
Hole -
Use(binder: identity.LocalVar, call: Term, body: Term)
pub type Type {
TypeVar(index: Int)
AbilityVar(index: Int)
Fn(params: List(Type), result: Type, requires: Requirement)
App(name: identity.DefinitionRef, args: List(Type))
Builtin(BuiltinType)
}
Constructors
-
TypeVar(index: Int) -
AbilityVar(index: Int) -
Fn(params: List(Type), result: Type, requires: Requirement) -
App(name: identity.DefinitionRef, args: List(Type)) -
Builtin(BuiltinType)
pub type TypeDeclaration {
Structural(
name: identity.LocalVar,
parameters: List(identity.LocalVar),
constructors: List(Constructor),
)
Unique(
name: identity.LocalVar,
guid: String,
parameters: List(identity.LocalVar),
constructors: List(Constructor),
)
}
Constructors
-
Structural( name: identity.LocalVar, parameters: List(identity.LocalVar), constructors: List(Constructor), ) -
Unique( name: identity.LocalVar, guid: String, parameters: List(identity.LocalVar), constructors: List(Constructor), )
pub type TypeRef {
TypeRefVar(identity.LocalVar)
TypeCon(identity.DefinitionRef)
TypeRefBuiltin(BuiltinType)
}
Constructors
-
TypeRefVar(identity.LocalVar) -
TypeCon(identity.DefinitionRef) -
TypeRefBuiltin(BuiltinType)
pub type Unit {
Unit(
root: identity.DefinitionRef,
defs: List(#(identity.DefinitionRef, Definition)),
)
}
Constructors
-
Unit( root: identity.DefinitionRef, defs: List(#(identity.DefinitionRef, Definition)), )