packages feed

some-1: some.cabal

name:               some
version:            1
stability:          provisional
cabal-version:      >=1.10
build-type:         Simple
author:             James Cook <mokus@deepbondi.net>, Oleg Grenrus <oleg.grenrus@iki.fi>
maintainer:         Oleg Grenrus <oleg.grenrus@iki.fi>
license:            BSD3
license-file:       LICENSE
homepage:           https://github.com/phadej/some
category:           Data, Dependent Types
synopsis:           Existential type: Some
description:
  This library defines an existential type 'Some'.
  .
  @
  data Some f where
  \    Some :: f a -> Some f
  @
  .
  in few variants, and utilities to work with it.

tested-with:
  GHC ==7.0.4
   || ==7.2.2
   || ==7.4.2
   || ==7.6.3
   || ==7.8.4
   || ==7.10.3
   || ==8.0.2
   || ==8.2.2
   || ==8.4.4
   || ==8.6.5
   || ==8.8.1

extra-source-files: ChangeLog.md

flag newtype-unsafe
  description:
    Use implementation using @newtype@ and unsafe @Any@, instead of GADT

  manual:      True
  default:     True

source-repository head
  type:     git
  location: git://github.com/phadej/some.git
  subdir:   some

library
  default-language: Haskell2010
  hs-source-dirs:   src

  if flag(newtype-unsafe)
    cpp-options: -DSOME_NEWTYPE

  exposed-modules:
    Data.GADT.Compare
    Data.GADT.DeepSeq
    Data.GADT.Show
    Data.Some
    Data.Some.Church
    Data.Some.GADT
    Data.Some.Newtype

  other-modules:    Data.GADT.Internal
  build-depends:
      base     >=4.3     && <4.14
    , deepseq  >=1.3.0.0 && <1.5

  if !impl(ghc >=7.8)
    build-depends: type-equality >=1 && <1.1

  if !impl(ghc >=8.0)
    build-depends:
        semigroups           >=0.18.5 && <0.20
      , transformers         >=0.3    && <0.6
      , transformers-compat  >=0.6    && <0.7