packages feed

fin-0: fin.cabal

name:                fin
version:             0
synopsis:            Nat and Fin
description:
  This package provides two simple types, and some tools to work with them.
  Also on type level as @DataKinds@.
  .
  @
  data Nat = Z | S Nat
  data Fin (n :: Nat) where
    Z :: Fin n
    S :: Fin n -> Fin ('Nat.S n)
  @
  .
  The "Data.Fin.Enum" module let's work generically with enumerations.
  .
  Differences to other packages:
  .
  * [type-natural](http://hackage.haskell.org/package/type-natural) depends
    on @singletons@ package. `fin` will try to stay light on the dependencies,
    and support as many GHC versions as practical.
  .
  * [peano](http://hackage.haskell.org/package/peano) is very incomplete
  .
  * [nat](http://hackage.haskell.org/package/nat) as well.
  .
  * [PeanoWitnesses](https://hackage.haskell.org/package/PeanoWitnesses)
    doesn't use @DataKinds@.
  .
  * [type-combinators](http://hackage.haskell.org/package/type-combinators)
    is big package too.
homepage:            https://github.com/phadej/vec
bug-reports:         https://github.com/phadej/vec/issues
license:             BSD3
license-file:        LICENSE
author:              Oleg Grenrus <oleg.grenrus@iki.fi>
maintainer:          Oleg.Grenrus <oleg.grenrus@iki.fi>
copyright:           (c) 2017 Oleg Grenrus
category:            Data
build-type:          Simple
extra-source-files:  ChangeLog.md
cabal-version:       >=1.10
tested-with:
  GHC==7.8.4,
  GHC==7.10.3,
  GHC==8.0.2,
  GHC==8.2.1

source-repository head
  type:      git
  location:  https://github.com/phadej/vec.git

library
  exposed-modules:
    Data.Fin
    Data.Fin.Enum
    Data.Nat
    Data.Type.Nat
  build-depends:
    base     >=4.7     && <4.11,
    deepseq  >=1.3.0.2 && <1.5,
    hashable >=1.2.6.1 && <1.3

  if !impl(ghc >= 8.0)
    build-depends:
      semigroups >=0.18.3 && <0.18.4

  if !impl(ghc >= 7.10)
    build-depends:
       nats >=1     && <1.2,
       void >=0.7.2 && <0.8

  ghc-options:         -Wall -fprint-explicit-kinds
  hs-source-dirs:      src
  default-language:    Haskell2010

  -- dump-core
  -- if impl(ghc >= 8.0)
  --  build-depends: dump-core
  --  ghc-options: -fplugin=DumpCore -fplugin-opt DumpCore:core-html

test-suite inspection
  type:                exitcode-stdio-1.0
  main-is:             Inspection.hs
  ghc-options:         -Wall -fprint-explicit-kinds
  hs-source-dirs:      test
  default-language:    Haskell2010
  build-depends:
    base,
    fin,
    tagged,
    inspection-testing >= 0.1.2 && <0.2

  if !impl(ghc >= 8.0)
    buildable: False

  -- useful for development
  ghc-options:
  -- -dsuppress-idinfo
  -- -dsuppress-coercions
  -- -dsuppress-type-applications
  -- -dsuppress-module-prefixes
  -- -dsuppress-type-signatures
  -- -dsuppress-uniques