This package contains the library Control.AllValues
which defines operations to encapsulate non-deterministic computations so that they can be embedded in purely functional computations, e.g., in I/O computations. The operations returns all values of an expression in a list structure or a single value in a Maybe
container.
The Curry implementations PAKCS and KiCS2 use an incomplete depth-first search strategy to encapsulate non-determinism, but KiCS2 provides more operators to select the search strategy (see package searchtree
). The Curry implementation Curry2Go uses a complete (parallel) search strategy.
The library implements strong encapsulation as discussed in this paper.