tree-monad-0.3.2: Non-Determinism Monad for Tree Search
CopyrightSebastian Fischer
LicenseBSD3
MaintainerNiels Bunkenburg (nbu@informatik.uni-kiel.de)
Stabilityexperimental
Portabilityportable
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Monad.SearchTree

Description

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.

Synopsis

Documentation

data SearchTree a Source #

The type SearchTree a represents non-deterministic computations as a tree structure.

Constructors

None 
One a 
Choice (SearchTree a) (SearchTree a) 

Instances

Instances details
Monad SearchTree Source # 
Instance details

Defined in Control.Monad.SearchTree

Methods

(>>=) :: SearchTree a -> (a -> SearchTree b) -> SearchTree b #

(>>) :: SearchTree a -> SearchTree b -> SearchTree b #

return :: a -> SearchTree a #

Functor SearchTree Source # 
Instance details

Defined in Control.Monad.SearchTree

Methods

fmap :: (a -> b) -> SearchTree a -> SearchTree b #

(<$) :: a -> SearchTree b -> SearchTree a #

MonadFix SearchTree Source # 
Instance details

Defined in Control.Monad.SearchTree

Methods

mfix :: (a -> SearchTree a) -> SearchTree a #

MonadFail SearchTree Source # 
Instance details

Defined in Control.Monad.SearchTree

Methods

fail :: String -> SearchTree a #

Applicative SearchTree Source # 
Instance details

Defined in Control.Monad.SearchTree

Methods

pure :: a -> SearchTree a #

(<*>) :: SearchTree (a -> b) -> SearchTree a -> SearchTree b #

liftA2 :: (a -> b -> c) -> SearchTree a -> SearchTree b -> SearchTree c #

(*>) :: SearchTree a -> SearchTree b -> SearchTree b #

(<*) :: SearchTree a -> SearchTree b -> SearchTree a #

Alternative SearchTree Source # 
Instance details

Defined in Control.Monad.SearchTree

MonadPlus SearchTree Source # 
Instance details

Defined in Control.Monad.SearchTree

Show a => Show (SearchTree a) Source # 
Instance details

Defined in Control.Monad.SearchTree

data Search a Source #

Another search monad based on continuations that produce search trees.

Instances

Instances details
Monad Search Source # 
Instance details

Defined in Control.Monad.SearchTree

Methods

(>>=) :: Search a -> (a -> Search b) -> Search b #

(>>) :: Search a -> Search b -> Search b #

return :: a -> Search a #

Functor Search Source # 
Instance details

Defined in Control.Monad.SearchTree

Methods

fmap :: (a -> b) -> Search a -> Search b #

(<$) :: a -> Search b -> Search a #

MonadFix Search Source # 
Instance details

Defined in Control.Monad.SearchTree

Methods

mfix :: (a -> Search a) -> Search a #

MonadFail Search Source # 
Instance details

Defined in Control.Monad.SearchTree

Methods

fail :: String -> Search a #

Applicative Search Source # 
Instance details

Defined in Control.Monad.SearchTree

Methods

pure :: a -> Search a #

(<*>) :: Search (a -> b) -> Search a -> Search b #

liftA2 :: (a -> b -> c) -> Search a -> Search b -> Search c #

(*>) :: Search a -> Search b -> Search b #

(<*) :: Search a -> Search b -> Search a #

Alternative Search Source # 
Instance details

Defined in Control.Monad.SearchTree

Methods

empty :: Search a #

(<|>) :: Search a -> Search a -> Search a #

some :: Search a -> Search [a] #

many :: Search a -> Search [a] #

MonadPlus Search Source # 
Instance details

Defined in Control.Monad.SearchTree

Methods

mzero :: Search a #

mplus :: Search a -> Search a -> Search a #

searchTree :: Search a -> SearchTree a Source #

Computes the SearchTree representation of a Search action.