defun: Defunctionalization helpers
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.
Once UnsaturatedTypeFamilies
extension is implemented in GHC
(Proposal 242),
this package will become more or less obsolete.
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
reflections using SBool
and NP
data types from singletons-bool
and sop-core
packages respectively.
This is the "batteries-included" variant with "many" dependencies; see the
defun-core
package and other defun-*
dependencies if you need a more limited
dependency footprint.
The first-class-families package has slightly different design,
in particular it doesn't reuse existing (nor define) own standalone type families.
In first-class-families
everything has to be evaluated via its Eval
type family (which job is similar to App
),
but defun
only makes higher-order type families look different.
In short, ergonomics are a bit different.
Downloads
- defun-0.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
Versions [RSS] | 0.1 |
---|---|
Change log | CHANGELOG.md |
Dependencies | defun-bool (>=0.1 && <0.1.1), defun-core (>=0.1 && <0.1.1), defun-sop (>=0.1 && <0.1.1) [details] |
Tested with | ghc ==9.2.8 || ==9.4.8 || ==9.6.3 || ==9.8.1 |
License | BSD-3-Clause |
Author | Oleg Grenrus <oleg.grenrus@iki.fi> |
Maintainer | Oleg Grenrus <oleg.grenrus@iki.fi> |
Category | Data |
Source repo | head: git clone https://github.com/phadej/defun.git(defun) |
Uploaded | by phadej at 2023-12-12T14:59:46Z |
Distributions | |
Downloads | 67 total (2 in the last 30 days) |
Rating | (no votes yet) [estimated by Bayesian average] |
Your Rating | |
Status | Docs available [build log] Last success reported on 2023-12-12 [all 1 reports] |