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