packages feed

monad-effect-0.2.3.0: monad-effect.cabal

cabal-version:      2.4
-- The name of the package.
name:               monad-effect

-- The package version.
-- https://pvp.haskell.org
-- PVP summary:     +-+------- breaking API changes
--                  | | +----- non-breaking API additions
--                  | | | +--- code changes with no API change
version:            0.2.3.0

-- A short (one-line) description of the package.
synopsis:  A fast and lightweight effect system.

-- A longer description of the package.
description:
        A fast and lightweight effect system.
        It provides a way to define and handle effects and exceptions in a modular and composable way.
        Main features: moduled effects, algebraic exceptions, pure states, and good performance.

-- The license under which the package is released.
license:            BSD-3-Clause

-- The file containing the license text.
license-file:       LICENSE

-- The package author(s).
author:             Eiko

-- An email address to which users can send suggestions, bug reports, and patches.
maintainer:         eikochanowo@outlook.com

-- A copyright notice.
-- copyright:
category:           Control, Monads, Effect
build-type:         Simple

-- Extra doc files to be distributed with the package, such as a CHANGELOG or a README.
extra-doc-files: CHANGELOG.md
               , README.md

-- Extra source files to be distributed with the package, such as examples, or a tutorial module.
-- extra-source-files:

source-repository head
  type: git
  location: https://github.com/Eiko-Tokura/monad-effect.git

flag benchO0
  description: Compile benchmarks with -O0
  default: False
  manual: True
flag benchO1
  description: Compile benchmarks with -O1
  default: False
  manual: True
flag benchO2
  description: Compile benchmarks with -O2
  default: False
  manual: True
flag noinline
  description: Disable inlining for Countdown benchmark
  default: False
  manual: True

common warnings
    ghc-options: -Wall

library
    -- Import common warning flags.
    import:           warnings

    -- | This is a small library that gets benefit from inlining and specialisation.
    -- therefore we turn on these optimisations
    ghc-options: -O2 -fexpose-all-unfoldings -fspecialise-aggressively -flate-dmd-anal
    -- -finfo-table-map -fdistinct-constructor-tables -ddump-to-file -ddump-splices

    -- Modules exported by the library.
    exposed-modules:  Control.Monad.Effect
                    , Control.Monad.Class.Except
                    , Control.System
                    , Control.System.EventLoop
                    , Data.Result
                    , Data.TypeList
                    , Data.TypeList.FData
                    , Data.TypeList.FData.TH
                    , Data.TypeList.Families
                    , Module.RS
                    , Module.RS.QQ
                    , Module.Resource
                    , Control.Monad.RS.Class

                    -- , Control.Monad.Effect.Concurrent
    -- Modules included in this library but not exported.
    other-modules: Data.TypeList.ConsFData
                 , Data.TypeList.ConsFData.Pattern
                 , Data.TypeList.FList
                 , Data.TypeList.UList
    -- LANGUAGE extensions used by modules in this package.
    -- other-extensions:

    -- Other library packages from which modules are imported.
    build-depends:    base >= 4 && < 5
                    , async < 2.4
                    , data-default >= 0.8.0 && < 0.9
                    , mtl < 2.4
                    , stm < 2.6
                    , text < 2.2
                    , exceptions < 0.11
                    , monad-control >= 1.0.3 && < 1.1
                    , resourcet >= 1.3.0 && < 1.4
                    , transformers-base >= 0.4.6 && < 0.5
                    , template-haskell < 2.24
                    , deepseq < 1.6
                    , parsec >=3 && < 4
                    , haskell-src-meta >= 0.8 && < 0.9

    -- Directories containing source files.
    hs-source-dirs:   src

    -- Base language which the package is written in.
    default-language: GHC2021

    default-extensions: OverloadedStrings
                      , DerivingStrategies
                      , DeriveAnyClass
                      , DerivingVia
                      , DataKinds
                      , GADTs
                      , LambdaCase
                      , LinearTypes
                      , TypeFamilies
                      , TypeApplications
                      , TemplateHaskell
test-suite monad-effect-test
    -- Import common warning flags.
    import:           warnings

    ghc-options: -flate-dmd-anal
    -- -ddump-simpl -ddump-to-file -dsuppress-all -ddump-splices

    -- Base language which the package is written in.
    default-language: GHC2021

    -- Modules included in this executable, other than Main.
    other-modules:    Examples
                      TH

    -- LANGUAGE extensions used by modules in this package.
    default-extensions: OverloadedStrings
                      , DerivingStrategies
                      , DerivingVia
                      , DataKinds
                      , GADTs
                      , LambdaCase
                      , TypeFamilies
                      , TypeApplications
                      , TemplateHaskell
                      , QuasiQuotes

    -- The interface type and version of the test suite.
    type:             exitcode-stdio-1.0

    -- Directories containing source files.
    hs-source-dirs:   test

    -- The entrypoint to the test suite.
    main-is:          Main.hs

    -- Test dependencies.
    build-depends:
        base >= 4 && < 5
      , monad-effect
      , criterion
      , containers
      , text
      , mtl
      , parsec

benchmark monad-effect-bench
    -- Import common warning flags.
    import:           warnings

    ghc-options: -fconstraint-solver-iterations=16
    -- -ddump-simpl -ddump-to-file -dsuppress-all 

    if flag(benchO2)
      ghc-options: -O2 -flate-dmd-anal -fmax-worker-args=16
    if flag(benchO1)
      ghc-options: -fmax-worker-args=16
    if flag(benchO0)
      ghc-options: -O0 -fmax-worker-args=16
    if flag(noinline)
      cpp-options: -DNOINLINE

    -- Base language which the package is written in.
    default-language: GHC2021

    -- LANGUAGE extensions used by modules in this package.
    default-extensions: OverloadedStrings
                      , DerivingStrategies
                      , DerivingVia
                      , DataKinds
                      , GADTs
                      , LambdaCase
                      , TypeFamilies
                      , TypeApplications
                      , TemplateHaskell
                      , PackageImports
                      , BlockArguments

    -- The interface type and version of the benchmark suite.
    type:             exitcode-stdio-1.0

    -- Directories containing source files.
    hs-source-dirs:   bench

    -- The entrypoint to the benchmark suite.
    main-is:          Main.hs


    build-depends: heftia-effects
                 , polysemy ^>= 1.9
                 , fused-effects ^>= 1.1
                 , effectful >= 2.3 && < 2.6
                 , mtl >= 2.2 && < 2.4
                 , logict >= 0.7.0.3 && < 0.9
                 , tasty-bench >= 0.3 && < 0.5
                 , unix
                 , monad-effect
                 , base
                 , text
                 , data-effects

    if impl(ghc >= 9.6) && impl(ghc < 9.10)
       build-depends: eff

    if impl(ghc < 9.10)
       build-depends: freer-simple ^>= 1.2

    other-modules:
         BenchCountdown
         BenchCatch
         BenchLocal
         BenchCoroutine
         BenchPyth
         BenchFileSizes