Package0.7.10Type System
ghc-typelits-natnormalise
GHC typechecker plugin for types of kind GHC.TypeLits.Nat
- Version0.7.10
- CategoryType System
- LicenceBSD-2-Clause
- AuthorChristiaan Baaij
- Maintainerchristiaan.baaij@gmail.com
- Homepagewww.clash-lang.org
- Pinned byhackage ghc-typelits-natnormalise 0.7.10
- Sourcehackage.haskell.org/package/ghc-typelits-natnormalise-0.7.10
Modules
3 modules- GHC.TypeLits.Normalise1A type checker plugin for GHC that can solve equalities of types of kind
- 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
7 packages- base-4.20.2.0with GHC
- containers-0.7with GHC
- ghc-9.10.3with GHC
- ghc-bignum-1.3with GHC
- ghc-tcplugins-extra-0.4.6in this set
- template-haskell-2.22.0.0with GHC
- transformers-0.6.1.1with GHC