package alba
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=4817038301d3e45bac9edf7e6f2fc8bf0a6d78e76e02ad7ea33ef69bcc17df3b
md5=25234357587126685d64f16236167937
doc/alba.albalib/Albalib/Build_context/index.html
Module Albalib.Build_context
Source
A build context consists of a context with holes and a stack of to be constructed terms.
There is always a next to be constructed term. The term is either in a function position or an argument position.
make gamma
Make a build context based on gamma
. Push 2 holes onto the context to get
Gamma, E: Any(2), e: E
The next to be constructed term points to e
.
val final :
t ->
(t * Alba_core.Term.t * Alba_core.Term.typ,
int list * Alba_core.Term.typ * Alba_core.Gamma.t)
result
Terminals
base_candidate range variant term nargs bc
Receive the term term
as a candidate for the next to be constructed term. The candidate is from the base context and in applied to nargs
arguments.
Base candidates are either
- Literals (Numbers, characters, strings)
- Variables from the base context
bound level nargs bc
Add a bound variable based on the last argument type and push a placeholder for the next argument type or the result type. I.e. expect the next argument type or the result type.
Product all (a: A) ... : RT
Typed expression exp: tp
Function Application f a b c ...
Function Abstraction \ x y ... := t
Where expression exp where f ... := value
The where expression
exp where
f := value
is treated like
(\f := exp) value
i.e.
Appl ( Lambda (f, F, exp), value)
i.e. a beta redex, and finally converted to
Where (f, F, exp, value)