packages feed

rec-def-0.2: rec-def.cabal

cabal-version:      2.4
name:               rec-def
version:            0.2
synopsis:           Recursively defined values
description:
   This library provides safe APIs that allow you to define and calculate
   values recursively, and still get a result out:
   .
   > let s1 = RS.insert 23 s2
   >     s2 = RS.insert 42 s1
   > in RS.get s1
   .
   will not loop, but rather produces the set @fromList [23,42]@
   .
   See "Data.Recursive.Examples" for more examples, or just browse the modules
   .
   * "Data.Recursive.Bool"
   * "Data.Recursive.Set"
   * "Data.Recursive.Map"
   * "Data.Recursive.DualBool"
   .
   More APIs (e.g. for maps or 'Natural') can be added over time, as need and good
   use-cases arise.

   .
   For the (unsafe) building blocks to build such APIs, see
   .
   * "Data.Propagator.Purify" for the wrapper that turns an IO-implemented
     propagator into a pure data structure
   * "Data.Propagator.Naive" for a naive propagator implementation
   * "Data.Propagator.P2" for a smarter propagator implementation for
     the two-point lattice, i.e. 'Bool'
   .
   The library is not (yet) focussed on performance, and uses a rather naive
   propagator implementation. Expect this to be slow if you have large graphs.
   This may be improved in the future (e.g. by propagating only deltas, and
   accumulating deltas before applying a function), but for now the focus is on
   foremost providing this capability in the first place and getting the
   user-facing API right.

homepage:           https://github.com/nomeata/haskell-rec-def
bug-reports:        https://github.com/nomeata/haskell-rec-def/issues/new
license:            BSD-2-Clause
license-file:       LICENSE
author:             Joachim Breitner
maintainer:         mail@joachim-breitner.de
copyright:          2022 Joachim Breitner
category:           Data
extra-source-files:
    CHANGELOG.md
    README.md
    examples.hs
tested-with: GHC==9.2.1, GHC==9.0.2, GHC==8.10.7, GHC==8.8.4, GHC==8.6.5, GHC==8.4.4

library
    exposed-modules: Data.Recursive.Examples
    exposed-modules: Data.Recursive.Bool
    exposed-modules: Data.Recursive.DualBool
    exposed-modules: Data.Recursive.Set
    exposed-modules: Data.Recursive.Map
    exposed-modules: Data.Recursive.Internal
    exposed-modules: Data.POrder
    exposed-modules: System.IO.RecThunk
    exposed-modules: Data.Propagator.Purify
    exposed-modules: Data.Propagator.Naive
    exposed-modules: Data.Propagator.Class
    exposed-modules: Data.Propagator.P2

    build-depends:    base >= 4.9 && < 5
    build-depends:    containers >= 0.5.11 && < 0.7

    default-language: Haskell2010

test-suite doctest
    type:             exitcode-stdio-1.0
    main-is:          doctests.hs
    default-language: Haskell2010
    ghc-options:      -threaded
    hs-source-dirs:   tests

    build-depends:    rec-def
    build-depends:    base >= 4.9 && < 5
    build-depends:    doctest ^>= 0.18.2
    build-depends:    QuickCheck
    build-depends:    template-haskell

test-suite spaceleak
    type:             exitcode-stdio-1.0
    main-is:          spaceleak.hs
    hs-source-dirs:   tests
    default-language: Haskell2010
    build-depends:    rec-def
    build-depends:    base >= 4.9 && < 5
    build-depends:    containers >= 0.5.11 && < 0.7

test-suite dejafu
    type:             exitcode-stdio-1.0
    other-modules:    System.IO.RecThunk
    other-modules:    Data.POrder
    other-modules:    Data.Propagator.Class
    other-modules:    Data.Propagator.Naive
    other-modules:    Data.Propagator.P2
    main-is:          dejafu.hs
    hs-source-dirs:   tests .
    default-language: Haskell2010
    ghc-options:      -threaded
    cpp-options:      -DDEJAFU

    build-depends:    base >= 4.9 && < 5
    build-depends:    containers >= 0.5.11 && < 0.7
    build-depends:    concurrency ^>= 1.11.0.2
    build-depends:    dejafu ^>= 2.4.0.3
    build-depends:    tasty
    build-depends:    tasty-dejafu ^>= 2.1.0.0
    build-depends:    random

source-repository head
    type:     git
    location: git://github.com/nomeata/haskell-rec-def