License | BSD-3-Clause |
---|---|
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Explicitly type-preserving bracket abstraction, a la Oleg Kiselyov. Turn elaborated, type-indexed terms into variableless, type-indexed terms with only constants and application.
For more information, see:
https://byorgey.wordpress.com/2023/07/13/compiling-to-intrinsically-typed-combinators/
Documentation
data BTerm :: Type -> Type where Source #
Closed, fully abstracted terms. All computation is represented by combinators. This is the ultimate target for the bracket abstraction operation.
data OTerm :: [Type] -> Type -> Type where Source #
These explicitly open terms are an intermediate stage in the bracket abstraction algorithm, i.e. they represent terms which have been only partially abstracted.