stream-monad-0.2: Simple, Fair and Terminating Backtracking MonadSource codeContentsIndex
Control.Monad.Stream
Portabilityportable
Stabilityexperimental
MaintainerSebastian Fischer (sebf@informatik.uni-kiel.de)
Description

This Haskell library provides an implementation of the MonadPlus type class that enumerates results of a non-deterministic computation by interleaving subcomputations in a way that has usually much better memory performance than other strategies with the same termination properties.

By using supensions in strategic positions, the user can ensure that the search does not diverge if there are remaining non-deterministic results.

More information is available on the authors website: http://okmij.org/ftp/Computation/monads.html#fair-bt-stream

Warning: Stream is only a monad when the results of runStream are interpreted as a multiset, i.e., a valid transformation according to the monad laws may change the order of the results.

Synopsis
data Stream a
suspended :: Stream a -> Stream a
runStream :: Stream a -> [a]
Documentation
data Stream a Source
Results of non-deterministic computations of type Stream a can be enumerated efficiently.
show/hide Instances
suspended :: Stream a -> Stream aSource
Suspensions can be used to ensure fairness.
runStream :: Stream a -> [a]Source
The function runStream enumerates the results of a non-deterministic computation.
Produced by Haddock version 2.6.0