Package0.8.4Type System
ghc-typelits-knownnat
Derive KnownNat constraints from other KnownNat constraints
- Version0.8.4
- CategoryType System
- LicenceBSD-2-Clause
- AuthorChristiaan Baaij
- Maintainerchristiaan.baaij@gmail.com
- Homepageclash-lang.org
- Pinned byhackage ghc-typelits-knownnat 0.8.4
- Sourcehackage.haskell.org/package/ghc-typelits-knownnat-0.8.4
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
6 packages- base-4.23.0.0with GHC
- ghc-10.0.0.20260917with GHC
- ghc-tcplugin-api-0.20.1.0in this set
- ghc-typelits-natnormalise-0.9.7in this set
- template-haskell-2.25.0.0with GHC
- transformers-0.6.3.0with GHC
Used by in this set · 0
Nothing in this set depends on it.