cabal-version:      2.2
name:               bound-extras
version:            0.0.1
synopsis:           ScopeH and ScopeT extras for bound
category:           Language, Compilers, Interpreters
description:
  Provides more complex @Scope@ variants; @ScopeT@ and @ScopeH@:
  .
  @
  Scope  b f a   ~ ScopeT b IdentityT f a ~ ScopeH b f f a
  ScopeT b t f a ~ ScopeH b (t f) f a
  @
  .
  'ScopeH' probably should be preferred over 'ScopeT'.
  Latter is left here for completeness.
  .
  Simple implementations of @ScopeH@ and @ScopeT@ would be similar
  (sans type arguments) to @Bound.Scope.Simple@.
  .
  Look into @examples/@ directory for /System F/ and /Bidirectional STLC/
  implemented with a help of 'ScopeH'.

license:            BSD-3-Clause
license-file:       LICENSE
copyright:          (c) 2018 Oleg Grenrus
author:             Oleg Grenrus, Edward Kmett
maintainer:         Oleg Grenrus <oleg.grenrus@iki.fi>
homepage:           https://github.com/phadej/bound-extras
bug-reports:        https://github.com/phadej/bound-extras/issues
tested-with:        GHC ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.1
extra-source-files: CHANGELOG.md examples/*.txt

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

library
  default-language: Haskell2010
  hs-source-dirs:   src
  ghc-options:      -Wall
  exposed-modules:
    Bound.ScopeH
    Bound.ScopeT
    Control.Monad.Module

  -- GHC boot libraries
  build-depends:
    , base          ^>=4.9.1.0 || ^>=4.10.1.0 || ^>=4.11.1.0 || ^>=4.12.0.0
    , deepseq       ^>=1.4.2.0
    , hashable      ^>=1.2.7.0
    , transformers  ^>=0.5.0.0

  -- other deps
  build-depends:
    , bound         ^>=2.0.1

  if !impl(ghc >=8.2)
    build-depends: bifunctors ^>=5.5.3

test-suite examples
  type:             exitcode-stdio-1.0
  main-is:          Examples.hs
  other-modules:
    BiSTLC
    Pretty
    SystemF

  default-language: Haskell2010
  hs-source-dirs:   examples
  ghc-options:      -Wall
  build-depends:
    , base
    , bound
    , bound-extras
    , containers    ^>=0.5.7.1 || ^>=0.6.0.1
    , filepath      ^>=1.4.1.1
    , pretty        ^>=1.1.3.3
    , tasty         >=1.1.0.3 && <1.3
    , tasty-golden  ^>=2.3.2
    , text-short    ^>=0.1.2
    , transformers  ^>=0.5.0.0
    , utf8-string   ^>=1.0.1.1

  if !impl(ghc >=8.2)
    build-depends: bifunctors