-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Non-Determinism Monad for Tree Search
--   
--   This Haskell library provides an implementation of the MonadPlus type
--   class that represents the search space as a tree whose constructors
--   represent mzero, return, and mplus.
@package tree-monad
@version 0.3


-- | This Haskell library provides an implementation of the MonadPlus type
--   class that represents the search space as a tree whose constructors
--   represent mzero, return, and mplus.
--   
--   Such a tree can be used to implement different search strategies,
--   e.g., by using a queue. It can also be used as a basis for parallel
--   search strategies that evaluate different parts of the search space
--   concurrently.
module Control.Monad.SearchTree

-- | The type <tt>SearchTree a</tt> represents non-deterministic
--   computations as a tree structure.
data SearchTree a
None :: SearchTree a
One :: a -> SearchTree a
Choice :: (SearchTree a) -> (SearchTree a) -> SearchTree a

-- | Another search monad based on continuations that produce search trees.
data Search a

-- | Computes the <tt>SearchTree</tt> representation of a <tt>Search</tt>
--   action.
searchTree :: Search a -> SearchTree a
instance GHC.Show.Show a => GHC.Show.Show (Control.Monad.SearchTree.SearchTree a)
instance GHC.Base.Functor Control.Monad.SearchTree.SearchTree
instance GHC.Base.Applicative Control.Monad.SearchTree.SearchTree
instance GHC.Base.Alternative Control.Monad.SearchTree.SearchTree
instance GHC.Base.Monad Control.Monad.SearchTree.SearchTree
instance GHC.Base.MonadPlus Control.Monad.SearchTree.SearchTree
instance GHC.Base.Functor Control.Monad.SearchTree.Search
instance GHC.Base.Applicative Control.Monad.SearchTree.Search
instance GHC.Base.Alternative Control.Monad.SearchTree.Search
instance GHC.Base.Monad Control.Monad.SearchTree.Search
instance GHC.Base.MonadPlus Control.Monad.SearchTree.Search
