packages feed

effectful-0.0.0.0: effectful.cabal

cabal-version:      2.4
build-type:         Simple
name:               effectful
version:            0.0.0.0
license:            BSD-3-Clause
license-file:       LICENSE
category:           Control
maintainer:         andrzej@rybczak.net
author:             Andrzej Rybczak
synopsis:           A simple, yet powerful extensible effects library.

description: A simple, performant extensible effects library with seamless
             integration with the existing Haskell ecosystem.

extra-source-files: CHANGELOG.md

tested-with: GHC ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.4
              || ==9.0.1 || ==9.2.0.20210422

bug-reports:   https://github.com/arybczak/effectful/issues
source-repository head
  type:     git
  location: https://github.com/arybczak/effectful.git

common language
    ghc-options:        -Wall

    default-language:   Haskell2010

    default-extensions: BangPatterns
                        ConstraintKinds
                        DataKinds
                        DefaultSignatures
                        DeriveFunctor
                        FlexibleContexts
                        FlexibleInstances
                        GADTs
                        GeneralizedNewtypeDeriving
                        LambdaCase
                        NamedFieldPuns
                        MultiParamTypeClasses
                        RankNTypes
                        RecordWildCards
                        RoleAnnotations
                        ScopedTypeVariables
                        StrictData
                        TupleSections
                        TypeApplications
                        TypeInType
                        TypeFamilies
                        TypeOperators

library
    import:         language

    build-depends:    base <5
                    , containers
                    , exceptions
                    , ghc-prim
                    , monad-control
                    , primitive
                    , resourcet
                    , transformers
                    , transformers-base
                    , unliftio-core

    hs-source-dirs:  src

    exposed-modules: Effectful
                     Effectful.Class.Reader
                     Effectful.Class.State
                     Effectful.Class.Writer
                     Effectful.Coroutine
                     Effectful.Error
                     Effectful.Internal.Env
                     Effectful.Internal.Has
                     Effectful.Internal.Monad
                     Effectful.Internal.Utils
                     Effectful.Reader
                     Effectful.Resource
                     Effectful.State
                     Effectful.State.Dynamic
                     Effectful.State.MVar
                     Effectful.Writer

test-suite test
    import:         language

    ghc-options:    -threaded -rtsopts

    build-depends:    base <5
                    , effectful
                    , exceptions
                    , lifted-async
                    , lifted-base
                    , tasty
                    , tasty-hunit
                    , unliftio

    hs-source-dirs: tests

    type:           exitcode-stdio-1.0
    main-is:        Main.hs

benchmark bench
    import:         language

    ghc-options:    -threaded -rtsopts -with-rtsopts=-T

    if impl(ghc < 9)
       build-depends: freer-simple

    if impl(ghc >= 8.2 && < 9.2)
       build-depends: fused-effects

    if impl(ghc >= 8.4 && < 9)
       build-depends: polysemy

    build-depends:    base <5
                    , effectful
                    , mtl
                    , tasty-bench

    hs-source-dirs: bench

    type:           exitcode-stdio-1.0
    main-is:        Main.hs

    other-modules:  Countdown