A promoted and singled version of the base library
singletons-base uses
singletons-th to define
promoted and singled functions from the
base library,
including the
Prelude. This library was originally presented in
Dependently Typed Programming with Singletons, published at the
Haskell Symposium, 2012.
(
https://richarde.dev/papers/2012/singletons/paper.pdf) See
also the paper published at Haskell Symposium, 2014, which describes
how promotion works in greater detail:
https://richarde.dev/papers/2014/promotion/promotion.pdf.
WARNING:
singletons-base defines orphan instances for
Sing,
SingKind, etc. for common types such as
Bool,
[],
Maybe, etc. If you define
instances of these types in your code, you will likely not be able to
use that code with
singletons-base.
singletons-base uses code that relies on bleeding-edge GHC
language extensions. As such,
singletons-base only supports
the latest major version of GHC (currently GHC 9.6). For more
information, consult the
singletons README.
You may also be interested in the following related libraries:
- The singletons library is a small, foundational library
that defines basic singleton-related types and definitions.
- The singletons-th library defines Template Haskell
functionality that allows promotion of term-level functions to
type-level equivalents and singling functions to dependently
typed equivalents.