packages feed

changeset-0.2.1: changeset.cabal

cabal-version: 2.4
name: changeset
version: 0.2.1
synopsis: Stateful monad transformer based on monoidal actions
description:
  A general state monad transformer with separate types for the state and the possible changes.
  It can be defined for any monoid action.
  The monoid represents "changes", "updates", "edits" or "diffs" on the state.
  The @changeset@ ecosystem has support for standard @containers@ and optics from @lens@
  by providing the packages @changeset-containers@ and @changeset-lens@.

license: MIT
license-file: LICENSE
author: Manuel Bärenz
maintainer: programming@manuelbaerenz.de
copyright: MIT
category: Control
build-type: Simple
extra-doc-files: CHANGELOG.md
tested-with:
  ghc ==9.2
  ghc ==9.4
  ghc ==9.6
  ghc ==9.8
  ghc ==9.10
  ghc ==9.12

source-repository head
  type: git
  location: https://github.com/turion/changeset

flag dev
  description: Enable warnings as errors. Active on ci.
  default: False
  manual: True

common opts
  ghc-options:
    -Wall

  if flag(dev)
    ghc-options:
      -Werror
  default-extensions:
    BangPatterns
    DeriveFunctor
    DeriveGeneric
    DeriveTraversable
    DerivingStrategies
    DerivingVia
    FlexibleContexts
    FlexibleInstances
    FunctionalDependencies
    GADTs
    GeneralizedNewtypeDeriving
    KindSignatures
    LambdaCase
    MultiParamTypeClasses
    NamedFieldPuns
    QuantifiedConstraints
    RankNTypes
    ScopedTypeVariables
    StandaloneDeriving
    StrictData
    TupleSections
    TypeApplications
    TypeOperators

library
  import: opts
  exposed-modules:
    Control.Monad.Changeset.Class
    Control.Monad.Trans.Changeset
    Data.Monoid.RightAction
    Data.Monoid.RightAction.Coproduct
    Data.Monoid.RightAction.Generic

  build-depends:
    base >=4.16 && <4.23,
    containers >=0.6 && <0.8,
    indexed-traversable ^>=0.1,
    mmorph >=1.1 && <1.3,
    monoid-extras ^>=0.7,
    profunctors >=5.5 && <=5.7,
    semialign >=1.1 && <1.4,
    these >=1.1 && <1.3,
    transformers >=0.5.6.2 && <0.7,
    witherable >=0.4 && <0.6,

  hs-source-dirs: src

  if impl(ghc >=9.6)
    build-depends:
      mtl ^>=2.3.1

    hs-source-dirs: src-mtl23
  else
    build-depends:
      mtl ^>=2.2.2

    hs-source-dirs: src-mtl22

  default-language: Haskell2010
  other-modules:
    Control.Monad.Trans.Changeset.Orphan

test-suite changeset-test
  import: opts
  default-language: Haskell2010
  type: exitcode-stdio-1.0
  hs-source-dirs: test
  main-is: Main.hs
  build-depends:
    base,
    changeset,
    containers >=0.6 && <0.8,
    falsify ^>=0.2.0,
    monoid-extras,
    tasty >=1.4.2 && <1.6,
    tasty-hunit ^>=0.10.2,
    transformers,

test-suite changeset-examples
  import: opts
  default-language: Haskell2010
  type: exitcode-stdio-1.0
  hs-source-dirs: examples

  if impl(ghc >=9.6)
    hs-source-dirs: examples-mtl23
  else
    hs-source-dirs: examples-mtl22

  main-is: Main.hs
  build-depends:
    base,
    changeset,
    monoid-extras,
    mtl,
    tasty >=1.4.2 && <1.6,
    tasty-hunit ^>=0.10.2,
    transformers,
    witherable,

  other-modules:
    Control.Monad.Trans.Changeset.AccumExample
    Control.Monad.Trans.Changeset.Examples