module Control.Parallel.TreeSearch ( parSearch ) where
import Control.Monad.SearchTree
import Control.Parallel
parSearch :: SearchTree a
-> [a]
parSearch :: SearchTree a -> [a]
parSearch SearchTree a
None = []
parSearch (One a
x) = [a
x]
parSearch (Choice SearchTree a
l SearchTree a
r) = [a]
rs [a] -> [a] -> [a]
forall a b. a -> b -> b
`par` (SearchTree a -> [a]
forall a. SearchTree a -> [a]
parSearch SearchTree a
l [a] -> [a] -> [a]
forall a. [a] -> [a] -> [a]
++ [a]
rs)
where
rs :: [a]
rs = SearchTree a -> [a]
forall a. SearchTree a -> [a]
parSearch SearchTree a
r