name:                fused-effects
version:             0.2.0.1
synopsis:            A fast, flexible, fused effect system.
description:         A fast, flexible, fused effect system, à la Effect Handlers in Scope, Monad Transformers and Modular Algebraic Effects: What Binds Them Together, and Fusion for Free—Efficient Algebraic Effect Handlers.
homepage:            https://github.com/robrix/fused-effects
license:             BSD3
license-file:        LICENSE
author:              Nicolas Wu, Tom Schrijvers, Rob Rix, Patrick Thomson
maintainer:          robrix@github.com
copyright:           2018-2019 Nicolas Wu, Tom Schrijvers, Rob Rix, Patrick Thomson
category:            Control
build-type:          Simple
extra-source-files:
  README.md
  ChangeLog.md
cabal-version:       >=1.10

tested-with:         GHC == 8.2.2
                   , GHC == 8.4.4
                   , GHC == 8.6.2

library
  exposed-modules:     Control.Effect
                     , Control.Effect.Carrier
                     , Control.Effect.Cull
                     , Control.Effect.Cut
                     , Control.Effect.Error
                     , Control.Effect.Fail
                     , Control.Effect.Fail.Internal
                     , Control.Effect.Fresh
                     , Control.Effect.Internal
                     , Control.Effect.Lift
                     , Control.Effect.Lift.Internal
                     , Control.Effect.NonDet
                     , Control.Effect.NonDet.Internal
                     , Control.Effect.Random
                     , Control.Effect.Random.Internal
                     , Control.Effect.Reader
                     , Control.Effect.Resource
                     , Control.Effect.Resumable
                     , Control.Effect.State
                     , Control.Effect.Sum
                     , Control.Effect.Trace
                     , Control.Effect.Void
                     , Control.Effect.Writer
  build-depends:       base >=4.9 && <4.13
                     , deepseq >=1.4.3 && <1.5
                     , MonadRandom >=0.5 && <0.6
                     , random
  hs-source-dirs:      src
  default-language:    Haskell2010
  ghc-options:         -Weverything -Wno-missing-local-signatures -Wno-missing-import-lists -Wno-implicit-prelude -Wno-safe -Wno-unsafe -Wno-name-shadowing -Wno-monomorphism-restriction -Wno-missed-specialisations -Wno-all-missed-specialisations
  if (impl(ghc >= 8.4))
    ghc-options:       -Wno-missing-export-lists
  if (impl(ghc >= 8.6))
    ghc-options:       -Wno-star-is-type


test-suite examples
  type:                exitcode-stdio-1.0
  main-is:             Main.hs
  other-modules:       Parser
                     , Teletype
  build-depends:       base >=4.9 && <4.13
                     , fused-effects
                     , hspec >=2.4.1
                     , QuickCheck >= 2.7 && < 2.13
  hs-source-dirs:      examples
  default-language:    Haskell2010

test-suite test
  type:                exitcode-stdio-1.0
  main-is:             Spec.hs
  other-modules:       Control.Effect.Spec
                     , Control.Effect.NonDet.Spec
  build-depends:       base >=4.9 && <4.13
                     , fused-effects
                     , hspec >=2.4.1
  hs-source-dirs:      test
  default-language:    Haskell2010

test-suite doctest
  type:                exitcode-stdio-1.0
  main-is:             Doctest.hs
  build-depends:       base >=4.9 && <4.13
                     , doctest >=0.7 && <1.0
  hs-source-dirs:      test
  default-language:    Haskell2010


benchmark benchmark
  type:               exitcode-stdio-1.0
  main-is:            Bench.hs
  build-depends:      base >=4.9 && <4.13
                    , criterion
                    , fused-effects
  hs-source-dirs:     benchmark
  default-language:   Haskell2010
  ghc-options:        -threaded -rtsopts "-with-rtsopts=-N -A4m -n2m"


source-repository head
  type:     git
  location: https://github.com/robrix/fused-effects