Files
IBAFLang/IBAF-cbs/Funcons-beta/Values/Abstraction/Thunks/Thunks.cbs
2023-11-01 09:29:33 +01:00

31 lines
583 B
Plaintext

### Thunks
[
Datatype thunks
Funcon thunk
Funcon force
]
Meta-variables
T <: values
Datatype
thunks(T) ::= thunk(_:abstractions(()=>T))
/*
`thunks(T)` consists of abstractions whose bodies do not depend on
a given value, and whose executions normally compute values of type `T`.
`thunk(abstraction(X))` evaluates to a thunk with dynamic bindings,
`thunk(closure(X))` computes a thunk with static bindings.
*/
Funcon
force(_:thunks(T)) : =>T
/*
`force(H)` enacts the abstraction of the thunk `H`.
*/
Rule
force(thunk(abstraction(X))) ~> no-given(X)