Package0.7.12Type System
ghc-typelits-knownnat
Derive KnownNat constraints from other KnownNat constraints
- Version0.7.12
- CategoryType System
- LicenceBSD-2-Clause
- AuthorChristiaan Baaij
- Maintainerchristiaan.baaij@gmail.com
- Homepageclash-lang.org
- Pinned byhackage ghc-typelits-knownnat 0.7.12
- Sourcehackage.haskell.org/package/ghc-typelits-knownnat-0.7.12
Modules
2 modules- GHC.TypeLits.KnownNat11Some "magic" classes and instances to get the GHC.TypeLits.KnownNat.Solver
- GHC.TypeLits.KnownNat.Solver1A type checker plugin for GHC that can derive "complex" KnownNat
Description
A type checker plugin for GHC that can derive "complex" KnownNat constraints from other simple/variable KnownNat constraints. i.e. without this plugin, you must have both a KnownNat n and a KnownNat (n+2) constraint in the type signature of the following function:
f :: forall n . (KnownNat n, KnownNat (n+2)) => Proxy n -> Integer f _ = natVal (Proxy :: Proxy n) + natVal (Proxy :: Proxy (n+2))
Using the plugin you can omit the KnownNat (n+2) constraint:
f :: forall n . KnownNat n => Proxy n -> Integer f _ = natVal (Proxy :: Proxy n) + natVal (Proxy :: Proxy (n+2))
The plugin can derive KnownNat constraints for types consisting of:
Type variables, when there is a corresponding KnownNat constraint Type-level naturals Applications of the arithmetic expression: +,-,*,^ Type functions, when there is either:
a matching given KnownNat constraint; or a corresponding KnownNat<N> instance for the type function
To use the plugin, add the
OPTIONS_GHC -fplugin GHC.TypeLits.KnownNat.Solver
Pragma to the header of your file.
Depends on
7 packages- base-4.20.2.0with GHC
- ghc-9.10.3with GHC
- ghc-prim-0.12.0with GHC
- ghc-tcplugins-extra-0.4.6in this set
- ghc-typelits-natnormalise-0.7.10in this set
- template-haskell-2.22.0.0with GHC
- transformers-0.6.1.1with GHC
Used by in this set · 0
Nothing in this set depends on it.