Control.Monad.Par.OpenList
Description
- data OpenList a
- empty :: OpenList a
- singleton :: a -> Par (OpenList a)
- cons :: NFData a => a -> OpenList a -> Par (OpenList a)
- head :: OpenList a -> a
- tail :: OpenList a -> Par (OpenList a)
- length :: Num t => OpenList a -> Par t
- close :: NFData a => OpenList a -> Par (OpenList a)
- join :: NFData a => OpenList a -> OpenList a -> Par (OpenList a)
- toList :: NFData a => OpenList a -> Par [a]
- fromList :: NFData a => [a] -> Par (OpenList a)
- toLazyList :: OpenList a -> Par [a]
- parMapM :: NFData a => (a1 -> Par a) -> OpenList a1 -> Par (OpenList a)
- parBuild :: NFData a => InclusiveRange -> (Int -> a) -> Par (OpenList a)
- parBuildM :: NFData a => InclusiveRange -> (Int -> Par a) -> Par (OpenList a)
- openlist_tests :: Test
- chaintest :: Int -> Par (IList Int)
- async_test :: IO ()
- lazy_chaintest :: Int -> Par [Int]
- data IList a
- newCell :: a -> Par (IList a)
Documentation
data OpenList a
cons :: NFData a => a -> OpenList a -> Par (OpenList a)
Add an element to the front of an OpenList. Works irrespective | of whether the input is closed.
tail :: OpenList a -> Par (OpenList a)
Tail of an OpenList. Beware, if the list contains only one element (e.g. the result of tail will be null), it must be CLOSED for tail to work.
close :: NFData a => OpenList a -> Par (OpenList a)
Terminate a non-empty open list so that it cannot be extended further.
fromList :: NFData a => [a] -> Par (OpenList a)
Convert a list to an OpenList, open to extension at the tail.
toLazyList :: OpenList a -> Par [a]
Asynchronously convert an OpenList to a lazy list. Returns immediately.
parBuild :: NFData a => InclusiveRange -> (Int -> a) -> Par (OpenList a)
Build an OpenList with a divide-and-conquer parallel strategy.
parBuildM :: NFData a => InclusiveRange -> (Int -> Par a) -> Par (OpenList a)
Build an OpenList with a divide-and-conquer parallel strategy, allowing nested parallelism in the per-element computation.
async_test :: IO ()
lazy_chaintest :: Int -> Par [Int]