CSPM-FiringRules-0.3.0.3: src/CSPM/FiringRules/Search.hs
-----------------------------------------------------------------------------
-- |
-- Module : CSPM.FiringRules.Search
-- Copyright : (c) Fontaine 2010 - 2011
-- License : BSD3
--
-- Maintainer : fontaine@cs.uni-duesseldorf.de
-- Stability : experimental
-- Portability : GHC-only
--
-- Definition of the Search Monad.
-- Currently just a small wrapper around the tree-monad package
--
-----------------------------------------------------------------------------
module CSPM.FiringRules.Search
(
Search
,runSearch
,anyOf
)
where
import qualified Control.Monad.SearchTree as MS
import Control.Parallel.TreeSearch (parSearch)
import Control.Monad
type Search a = MS.Search a
-- | Run the search monad.
runSearch :: Search a -> [a]
runSearch = parSearch . MS.searchTree
-- | Lift a list to the search monad.
anyOf :: [a] -> Search a
anyOf = msum . map return