Package0.9.7Type System
ghc-typelits-natnormalise
GHC typechecker plugin for types of kind GHC.TypeLits.Nat
- Version0.9.7
- CategoryType System
- LicenceBSD-2-Clause
- AuthorChristiaan Baaij
- Maintainerchristiaan.baaij@gmail.com
- Homepagewww.clash-lang.org
- Pinned byhackage ghc-typelits-natnormalise 0.9.7
- Sourcehackage.haskell.org/package/ghc-typelits-natnormalise-0.9.7
Modules
4 modules- GHC.TypeLits.Normalise1A type checker plugin for GHC that can solve equalities of types of kind
- GHC.TypeLits.Normalise.Compat11
- GHC.TypeLits.Normalise.SOP10SOP: Sum-of-Products, sorta The arithmetic operation for Nat are, addition
- GHC.TypeLits.Normalise.Unify21
Description
A type checker plugin for GHC that can solve equalities and inequalities of types of kind Nat, where these types are either:
Type-level naturals Type variables Applications of the arithmetic expressions (+,-,*,^).
It solves these equalities by normalising them to sort-of SOP (Sum-of-Products) form, and then perform a simple syntactic equality.
For example, this solver can prove the equality between:
(x + 2)^(y + 2)
and
4*x*(2 + x)^y + 4*(2 + x)^y + (2 + x)^y*x^2
Because the latter is actually the SOP normal form of the former.
To use the plugin, add the
OPTIONS_GHC -fplugin GHC.TypeLits.Normalise
Pragma to the header of your file.
Depends on
5 packages- base-4.22.0.0with GHC
- containers-0.8with GHC
- ghc-9.14.1with GHC
- ghc-tcplugin-api-0.20.1.0in this set
- transformers-0.6.1.2with GHC