|Maintainer||Sebastian Fischer (email@example.com)|
This library provides an implementation of the MonadPlus type class that enumerates the levels of the search space and allows to implement breadth-first search.
The implementation is inspired by Mike Spivey and Silvija Seres: cf. Chapter 9 of the book 'The Fun of Programming'.
Levels is only a monad when the results of the
enumeration functions are interpreted as a multiset, i.e., a valid
transformation according to the monad laws may change the order of
Non-Deterministic computations of type
Levels a can be searched
levels yields the results of a non-deterministic
computation grouped in levels.
breadthFirstSearch enumerates the results of a
non-deterministic computation in breadth-first order.
DepthBound represents computations with a bounded
depth. It's monad instances implements iterative deepening.
iterLevels computes the levels of a depth bound
computation using iterative deepening.
iterativeDeepening enumerates the results of a
non-deterministic computations using iterative deepening.