License | BSD-3-Clause |
---|---|
Safe Haskell | None |
Language | Haskell2010 |
Swarm.Game.World.Abstract
Description
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
Closed, fully abstracted terms. All computation is represented by combinators. This is the ultimate target for the bracket abstraction operation.
Constructors
BApp :: forall a1 a. BTerm (a1 -> a) -> BTerm a1 -> BTerm a | |
BConst :: forall a. Const a -> BTerm a |
data OTerm (a :: [Type]) b 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.