packages feed

heftia-effects-0.4.0.1: heftia-effects.cabal

cabal-version:      2.4
name:               heftia-effects
version:            0.4.0.1

-- A short (one-line) description of the package.
synopsis: higher-order effects done right

-- A longer description of the package.
description:
    This library is the battery-included version of the [heftia](https://hackage.haskell.org/package/heftia) package,
    providing interpreters for standard effects.

-- A URL where users can report bugs.
bug-reports: https://github.com/sayo-hs/heftia

-- The license under which the package is released.
license:            MPL-2.0
license-file:       LICENSE
author:             Sayo Koyoneda <ymdfield@outlook.jp>
maintainer:         Sayo Koyoneda <ymdfield@outlook.jp>

-- A copyright notice.
copyright: 2023-2024 Sayo Koyoneda
category: Control, Effect, Monads

extra-doc-files:
    ChangeLog.md
    NOTICE
    README.md

tested-with:
    GHC == 9.8.2
    GHC == 9.4.1

source-repository head
    type: git
    location: https://github.com/sayo-hs/heftia
    tag: v0.4.0.1
    subdir: heftia-effects

common common-base
    ghc-options:      -Wall
    default-language: GHC2021

    default-extensions:
        LambdaCase,
        DerivingStrategies,
        DataKinds,
        TypeFamilies,
        BlockArguments,
        FunctionalDependencies,
        RecordWildCards,
        DefaultSignatures,
        PatternSynonyms

    build-depends:
        base >= 4.17 && < 4.21,
        data-effects ^>= 0.2,
        heftia ^>= 0.4,
        time >= 1.11.1 && < 1.15,
        unliftio ^>= 0.2,
        unbounded-delays ^>= 0.1.1,
        ghc-typelits-knownnat ^>= 0.7,
        containers > 0.6.5 && < 0.8,

    ghc-options: -Wall

library
    import: common-base

    exposed-modules:
        Control.Monad.Hefty.Reader
        Control.Monad.Hefty.Writer
        Control.Monad.Hefty.State
        Control.Monad.Hefty.Except
        Control.Monad.Hefty.ShiftReset
        Control.Monad.Hefty.NonDet
        Control.Monad.Hefty.Coroutine
        Control.Monad.Hefty.Input
        Control.Monad.Hefty.Output
        Control.Monad.Hefty.Resource
        Control.Monad.Hefty.Unlift
        Control.Monad.Hefty.Provider
        Control.Monad.Hefty.KVStore
        Control.Monad.Hefty.Fresh
        Control.Monad.Hefty.Fail
        Control.Monad.Hefty.Concurrent.Timer

    reexported-modules:
        Control.Monad.Hefty,
        Data.Effect.OpenUnion,
        Data.Effect,
        Data.Effect.TH,
        Data.Effect.Tag,
        Data.Effect.Key,
        Data.Effect.Key.TH,
        Data.Effect.HFunctor,
        Data.Effect.HFunctor.HCont,
        Data.Effect.HFunctor.TH,
        Control.Effect,
        Control.Effect.Tag,
        Control.Effect.Key,
        Data.Effect.Reader,
        Data.Effect.Writer,
        Data.Effect.State,
        Data.Effect.Except,
        Data.Effect.ShiftReset,
        Data.Effect.NonDet,
        Data.Effect.Coroutine,
        Data.Effect.Input,
        Data.Effect.Output,
        Data.Effect.Resource,
        Data.Effect.Unlift,
        Data.Effect.Provider,
        Data.Effect.KVStore,
        Data.Effect.Fresh,
        Data.Effect.Fail,
        Data.Effect.Concurrent.Timer,

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

    -- LANGUAGE extensions used by modules in this package.
    -- other-extensions:
    build-depends:

    hs-source-dirs:   src

test-suite test
    import: common-base

    main-is: Driver.hs
    other-modules:
        Test.Semantics
        Test.Writer
        Test.Pyth
        Test.Coroutine

    hs-source-dirs: test

    build-depends:
        heftia-effects,
        tasty                         >= 1.4 && < 1.6,
        tasty-hspec                   ^>= 1.2,
        hspec                         >= 2.5 && < 2.12,
        unliftio                      ^>= 0.2,

    build-tool-depends:
        tasty-discover:tasty-discover

    type: exitcode-stdio-1.0


executable Teletype
    import: common-base

    main-is: Main.hs
    hs-source-dirs: Example/Teletype
    build-depends:
        heftia-effects,

executable KeyedEffects
    import: common-base

    main-is: Main.hs
    hs-source-dirs: Example/KeyedEffects
    build-depends:
        heftia-effects,

executable Logging
    import: common-base

    main-is: Main.hs
    hs-source-dirs: Example/Logging
    build-depends:
        heftia-effects,
        text >= 2.0 && < 2.2,
        time,

executable Continuation
    import: common-base

    main-is: Main.hs
    hs-source-dirs: Example/Continuation
    build-depends:
        heftia-effects,

executable Continuation2
    import: common-base

    main-is: Main.hs
    hs-source-dirs: Example/Continuation2
    build-depends:
        heftia-effects,
        extra ^>= 1.7.14,

executable Writer
    import: common-base

    main-is: Main.hs
    hs-source-dirs: Example/Writer
    build-depends:
        heftia-effects,

executable SemanticsZoo
    import: common-base

    main-is: Main.hs
    hs-source-dirs: Example/SemanticsZoo
    build-depends:
        heftia-effects,

executable FileSystemProvider
    import: common-base

    main-is: Main.hs
    hs-source-dirs: Example/FileSystemProvider
    build-depends:
        heftia-effects,

benchmark heftia-bench
    import: common-base

    type:           exitcode-stdio-1.0
    hs-source-dirs: bench
    main-is:        Main.hs

    ghc-options: -fconstraint-solver-iterations=16

    build-depends:
        heftia-effects,
        freer-simple ^>= 1.2,
        polysemy ^>= 1.9,
        fused-effects ^>= 1.1,
        effectful ^>= 2.3,
        eveff ^>= 1.0,
        mtl >= 2.2 && < 2.4,
        logict >= 0.7.0.3 && < 0.9,
        tasty-bench >= 0.3 && < 0.5,
        eff,
        mpeff,

    default-extensions:
        PackageImports

    other-modules:
        BenchCountdown
        BenchCatch
        -- BenchLocal
        BenchCoroutine
        BenchPyth