packages feed

ghc-typelits-natnormalise-0.5: ghc-typelits-natnormalise.cabal

name:                ghc-typelits-natnormalise
version:             0.5
synopsis:            GHC typechecker plugin for types of kind GHC.TypeLits.Nat
description:
  A type checker plugin for GHC that can solve /equalities/ 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.
homepage:            http://www.clash-lang.org/
bug-reports:         http://github.com/clash-lang/ghc-typelits-natnormalise/issues
license:             BSD2
license-file:        LICENSE
author:              Christiaan Baaij
maintainer:          christiaan.baaij@gmail.com
copyright:           Copyright © 2015-2016 University of Twente
category:            Type System
build-type:          Simple
extra-source-files:  README.md
                     CHANGELOG.md
cabal-version:       >=1.10

source-repository head
  type: git
  location: https://github.com/clash-lang/ghc-typelits-natnormalise.git

flag deverror
  description:
    Enables `-Werror` for development mode and TravisCI
  default: False
  manual: True

library
  exposed-modules:     GHC.TypeLits.Normalise,
                       GHC.TypeLits.Normalise.SOP,
                       GHC.TypeLits.Normalise.Unify
  build-depends:       base                >=4.9   && <5,
                       ghc                 >=8.0.1 && <8.2,
                       ghc-tcplugins-extra >=0.2,
                       integer-gmp         >=1.0   && <1.1
  hs-source-dirs:      src
  default-language:    Haskell2010
  other-extensions:    CPP
                       LambdaCase
                       RecordWildCards
                       TupleSections
  if flag(deverror)
    ghc-options:         -Wall -Werror
  else
    ghc-options:         -Wall

test-suite test-ghc-typelits-natnormalise
  type:                exitcode-stdio-1.0
  main-is:             Tests.hs
  Other-Modules:       ErrorTests
  build-depends:       base >=4.8 && <5,
                       ghc-typelits-natnormalise >= 0.4,
                       tasty >= 0.10,
                       tasty-hunit >= 0.9
  hs-source-dirs:      tests
  default-language:    Haskell2010
  other-extensions:    DataKinds
                       GADTs
                       KindSignatures
                       NoImplicitPrelude
                       TypeFamilies
                       TypeOperators
                       ScopedTypeVariables
  if flag(deverror)
    ghc-options:       -O0 -dcore-lint