Description
Defunctionalization helpers: core definitions.
Description
The package defun
provides defunctionalization helpers, most importantly type family DeFun.Core.App
allowing to write higher-order type families. The singletons
package also has its own type family Apply
, but the machinery is tied to the Sing
/ singletons.
In particular, the Lam
counterpart SLambda
is specialized to Sing
arguments. The defun
's Lam
is however fully general, so you can use your own singletons or (importantly) singleton-like arguments.
The package provides few defunctionalized functions, and their term-level variants can be found in defun-bool
and defun-sop
packages, which use SBool
and NP
data types from singletons-bool
and sop-core
packages respectively.