packages feed

heftia-0.2.0.0: heftia.cabal

cabal-version:      2.4
name:               heftia
version:            0.2.0.0

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

-- A longer description of the package.
description:
    Heftia is a higher-order effects version of Freer.
    .
    This library provides "[continuation-based semantics](https://github.com/lexi-lambda/eff/blob/master/notes/semantics-zoo.md)"
    for higher-order effects, the same as [lexi-lambda's eff](https://github.com/lexi-lambda/eff).
    Instead of using the @IO@ monad to implement delimited continuations for effects,
    Heftia internally uses @Freer@ monad.
    .
    The paper
    .
    * Casper Bach Poulsen and Cas van der Rest. 2023. Hefty Algebras: Modular
    Elaboration of Higher-Order Algebraic Effects. Proc. ACM Program. Lang. 7,
    POPL, Article 62 (January 2023), 31 pages. <https://doi.org/10.1145/3571255>
    .
    inspires this library.
    Hefty trees, proposed by the above paper, are extensions of free monads,
    allowing for a straightforward treatment of higher-order effects.
    .
    This library provides Hefty monads and Freer monads, encoded into data
    types in several ways to enable tuning in pursuit of high performance.
    .

-- 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:             Yamada Ryo <ymdfield@outlook.jp>
maintainer:         Yamada Ryo <ymdfield@outlook.jp>

-- A copyright notice.
copyright:
    2023-2024 Yamada Ryo
category: Control, Monads

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

tested-with:
    GHC == 9.2.8

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

library
    exposed-modules:
        Control.Effect.Hefty
        Control.Effect.Free
        Control.Effect.ExtensibleFinal
        Control.Effect.ExtensibleChurch
        Control.Effect.ExtensibleTree
        Control.Effect.ExtensibleFinalA
        Control.Effect.ExtensibleTreeA
        Control.Effect.ExtensibleFastA
        Control.Hefty
        Control.Freer
        Control.Freer.Final
        Control.Monad.Freer
        Control.Monad.Freer.Church
        Control.Monad.Freer.Tree
        Data.Hefty.Union
        Data.Hefty.Extensible
        Data.Free.Sum

    reexported-modules:
        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,

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

    -- LANGUAGE extensions used by modules in this package.
    -- other-extensions:
    build-depends:
        base                          ^>= 4.16.4.0,
        data-effects                ^>= 0.1,
        mtl ^>= 2.2.2,
        free ^>= 5.2,
        kan-extensions ^>= 5.2.5,
        constraints ^>= 0.13.4,
        transformers-base ^>= 0.4.6,
        transformers ^>= 0.5.6,
        extensible ^>= 0.9,
        membership == 0.0.1,
        singletons-base ^>= 3.1,
        singletons-th ^>= 3.1,
        unliftio ^>= 0.2,

    hs-source-dirs:   src
    ghc-options:      -Wall
    default-language: GHC2021

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


test-suite test
    main-is: Driver.hs
    hs-source-dirs: test
    build-depends:
        heftia,
        base,
        tasty                         ^>= 1.4,
        tasty-hunit                   ^>= 0.10,

    type: exitcode-stdio-1.0

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

    default-language: GHC2021

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