cabal-version: 3.0
name: ghc-typelits-extra
version: 0.5.2
synopsis: Additional type-level operations on GHC.TypeLits.Nat
description:
Additional type-level operations on @GHC.TypeLits.Nat@:
* @Max@: type-level <http://hackage.haskell.org/package/base-4.8.2.0/docs/Prelude.html#v:max max>
* @Min@: type-level <http://hackage.haskell.org/package/base-4.8.2.0/docs/Prelude.html#v:min min>
* @Div@: type-level <http://hackage.haskell.org/package/base-4.8.2.0/docs/Prelude.html#v:div div>
* @Mod@: type-level <http://hackage.haskell.org/package/base-4.8.2.0/docs/Prelude.html#v:mod mod>
* @FLog@: type-level equivalent of <https://hackage.haskell.org/package/base-4.17.0.0/docs/GHC-Integer-Logarithms.html#v:integerLogBase-35- integerLogBase#>
i.e. the exact integer equivalent to @floor (logBase x y)@
* @CLog@: type-level equivalent of /the ceiling of/ <https://hackage.haskell.org/package/base-4.17.0.0/docs/GHC-Integer-Logarithms.html#v:integerLogBase-35- integerLogBase#>
i.e. the exact integer equivalent to @ceiling (logBase x y)@
* @CLogWZ@: extension of @CLog@, which returns the additional third argument in case the second argument is zero
* @Log@: type-level equivalent of <https://hackage.haskell.org/package/base-4.17.0.0/docs/GHC-Integer-Logarithms.html#v:integerLogBase-35- integerLogBase#>
where the operation only reduces when @floor (logBase b x) ~ ceiling (logBase b x)@
* @GCD@: a type-level <http://hackage.haskell.org/package/base-4.8.2.0/docs/Prelude.html#v:gcd gcd>
* @LCM@: a type-level <http://hackage.haskell.org/package/base-4.8.2.0/docs/Prelude.html#v:lcm lcm>
And a custom solver for the above operations defined in
@GHC.TypeLits.Extra.Solver@ as a GHC type-checker plugin. To use the plugin,
add the
@
OPTIONS_GHC -fplugin GHC.TypeLits.Extra.Solver
@
pragma to the header of your file.
homepage: http://www.clash-lang.org/
bug-reports: http://github.com/clash-lang/ghc-typelits-extra/issues
license: BSD-2-Clause
license-file: LICENSE
author: Christiaan Baaij
maintainer: christiaan.baaij@gmail.com
copyright: Copyright © 2015-2016, University of Twente,
2017-2018, QBayLogic B.V.
category: Type System
build-type: Simple
extra-source-files: README.md
CHANGELOG.md
tested-with: GHC == 8.8.4, GHC == 8.10.7, GHC == 9.0.2, GHC == 9.2.8,
GHC == 9.4.8, GHC == 9.6.6, GHC == 9.8.4, GHC == 9.10.3,
GHC == 9.12.2
source-repository head
type: git
location: https://github.com/clash-lang/ghc-typelits-extra.git
flag deverror
description:
Enables `-Werror` for development mode and TravisCI
default: False
manual: True
library
exposed-modules: GHC.TypeLits.Extra,
GHC.TypeLits.Extra.Solver
other-modules: GHC.TypeLits.Extra.Solver.Compat
GHC.TypeLits.Extra.Solver.Unify
GHC.TypeLits.Extra.Solver.Operations
build-depends: base >= 4.8 && <5,
containers >= 0.5.7.1 && <0.9,
ghc >= 8.8 && <9.17,
ghc-prim >= 0.5 && <1.0,
ghc-tcplugin-api >= 0.18.1.0 && <0.19,
ghc-typelits-knownnat >= 0.7.2 && <0.9,
ghc-typelits-natnormalise >= 0.9.3 && <0.10,
transformers >= 0.4.2.0 && <0.7,
template-haskell >= 2.15 && <2.25
if impl(ghc >= 9.0.0)
build-depends: ghc-bignum >=1.0 && <1.5
else
build-depends: integer-gmp >=1.0 && <1.1
mixins:
ghc
( TcTypeNats as GHC.Builtin.Types.Literals
, DataCon as GHC.Core.DataCon
, TyCoRep as GHC.Core.TyCo.Rep
, Type as GHC.Core.Type
, Plugins as GHC.Driver.Plugins
)
if impl(ghc >= 8.9)
mixins:
ghc
( Constraint as GHC.Tc.Types.Constraint
)
else
mixins:
ghc
( TcRnTypes as GHC.Tc.Types.Constraint
)
hs-source-dirs: src
default-language: Haskell2010
other-extensions: DataKinds
FlexibleInstances
GADTs
MagicHash
MultiParamTypeClasses
ScopedTypeVariables
TemplateHaskell
TupleSections
TypeApplications
TypeFamilies
TypeOperators
UndecidableInstances
if flag(deverror)
ghc-options: -Wall -Werror
else
ghc-options: -Wall
test-suite test-ghc-typelits-extra
type: exitcode-stdio-1.0
main-is: Main.hs
Other-Modules: ErrorTests
build-depends: base >= 4.8 && <5,
ghc-typelits-extra,
ghc-typelits-knownnat >= 0.8.2,
ghc-typelits-natnormalise >= 0.9.0,
tasty >= 0.10,
tasty-hunit >= 0.9
hs-source-dirs: tests
default-language: Haskell2010
other-extensions: DataKinds
TypeOperators
if flag(deverror)
ghc-options: -dcore-lint