ghc-typelits-knownnat
Version 0.7 revision 0 uploaded by ChristiaanBaaij.
Package meta
- Synopsis
- Derive KnownNat constraints from other KnownNat constraints
- Description
A type checker plugin for GHC that can derive "complex"
KnownNat
constraints from other simple/variableKnownNat
constraints. i.e. without this plugin, you must have both aKnownNat n
and aKnownNat (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
constraintType-level naturals
Applications of the arithmetic expression: +,-,*,^
Type functions, when there is either:
a matching given
KnownNat
constraint; ora 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.
- Author
- Christiaan Baaij
- Bug reports
- n/a
- Category
- Type System
- Copyright
- Copyright © 2016 , University of Twente, 2017-2018, QBayLogic B.V., 2017 , Google Inc.
- Homepage
- http://clash-lang.org/
- Maintainer
- christiaan.baaij@gmail.com
- Package URL
- n/a
- Stability
- n/a