| dph-base-0.3: Basic Definitions for Data-Parallel Haskell. | Source code | Contents | Index

Data.Array.Parallel.Stream

Portability | non-portable (existentials)
Stability | internal
Maintainer | Roman Leshchinskiy <rl@cse.unsw.edu.au>

Description
This module defined the interface to the stream library used for loop fusion.
Synopsis

data Step s a

= Done
| Skip !s
| Yield !a !s

data Stream a = forall s . Rebox s => Stream (s -> Step s a) !s Int
emptyS :: Stream a
singletonS :: a -> Stream a
consS :: a -> Stream a -> Stream a
replicateS :: Int -> a -> Stream a
replicateEachS :: Int -> Stream (Int :*: a) -> Stream a
(+++) :: Stream a -> Stream a -> Stream a
indexedS :: Stream a -> Stream (Int :*: a)
tailS :: Stream a -> Stream a
enumFromToS :: Int -> Int -> Stream Int
enumFromThenToS :: Int -> Int -> Int -> Stream Int
enumFromStepLenS :: Int -> Int -> Int -> Stream Int
enumFromToEachS :: Int -> Stream (Int :*: Int) -> Stream Int
toStream :: [a] -> Stream a
fromStream :: Stream a -> [a]
mapS :: (a -> b) -> Stream a -> Stream b
filterS :: (a -> Bool) -> Stream a -> Stream a
foldS :: (b -> a -> b) -> b -> Stream a -> b
fold1MaybeS :: (a -> a -> a) -> Stream a -> MaybeS a
scanS :: (b -> a -> b) -> b -> Stream a -> Stream b
scan1S :: (a -> a -> a) -> Stream a -> Stream a
mapAccumS :: (acc -> a -> acc :*: b) -> acc -> Stream a -> Stream b
zipWithS :: (a -> b -> c) -> Stream a -> Stream b -> Stream c
zipWith3S :: (a -> b -> c -> d) -> Stream a -> Stream b -> Stream c -> Stream d
zipS :: Stream a -> Stream b -> Stream (a :*: b)
combineS :: Stream Bool -> Stream a -> Stream a -> Stream a
findS :: (a -> Bool) -> Stream a -> Maybe a
findIndexS :: (a -> Bool) -> Stream a -> Maybe Int
randomS :: (RandomGen g, Random a) => Int -> g -> Stream a
randomRS :: (RandomGen g, Random a) => Int -> (a, a) -> g -> Stream a

data SStream a = SStream {

segd :: Stream Int
values :: Stream a

}

segmentS :: Stream Int -> Stream a -> SStream a
foldValuesSS :: (a -> b -> a) -> a -> SStream b -> Stream a
fold1ValuesSS :: (a -> a -> a) -> SStream a -> Stream a
combineSS :: Stream Bool -> SStream a -> SStream a -> Stream a
(^+++^) :: SStream a -> SStream a -> Stream a

Documentation

data Step s a | Source

Constructors

Done |
Skip !s |
Yield !a !s |

Instances

Functor (Step s)

data Stream a | Source

Constructors

forall s . Rebox s => Stream (s -> Step s a) !s Int |

emptyS :: Stream a | Source

Empty stream

singletonS :: a -> Stream a | Source

Singleton stream

consS :: a -> Stream a -> Stream a | Source

Construction

replicateS :: Int -> a -> Stream a | Source

Replication

replicateEachS :: Int -> Stream (Int :*: a) -> Stream a | Source

Given a stream of (length,value) pairs and the sum of the lengths, replicate each value to the given length.

(+++) :: Stream a -> Stream a -> Stream a | Source

Concatenation

indexedS :: Stream a -> Stream (Int :*: a) | Source

Associate each element in the `Stream` with its index

tailS :: Stream a -> Stream a | Source

Yield the tail of a stream

enumFromToS :: Int -> Int -> Stream Int | Source

Yield an enumerated stream

enumFromThenToS :: Int -> Int -> Int -> Stream Int | Source

Yield an enumerated stream using a specific step

enumFromStepLenS :: Int -> Int -> Int -> Stream Int | Source

enumFromToEachS :: Int -> Stream (Int :*: Int) -> Stream Int | Source

    enumFromToEachS [k1 :*: m1, ..., kn :*: mn] = [k1,...,m1,...,kn,...,mn]

toStream :: [a] -> Stream a | Source

Convert a list to a `Stream`

fromStream :: Stream a -> [a] | Source

Generate a list from a `Stream`

mapS :: (a -> b) -> Stream a -> Stream b | Source

Mapping

filterS :: (a -> Bool) -> Stream a -> Stream a | Source

Filtering

foldS :: (b -> a -> b) -> b -> Stream a -> b | Source

Folding

fold1MaybeS :: (a -> a -> a) -> Stream a -> MaybeS a | Source

Yield `NothingS` if the `Stream` is empty and fold it otherwise.

scanS :: (b -> a -> b) -> b -> Stream a -> Stream b | Source

Scanning

scan1S :: (a -> a -> a) -> Stream a -> Stream a | Source

Scan over a non-empty `Stream`

mapAccumS :: (acc -> a -> acc :*: b) -> acc -> Stream a -> Stream b | Source

zipWithS :: (a -> b -> c) -> Stream a -> Stream b -> Stream c | Source

Zipping

zipWith3S :: (a -> b -> c -> d) -> Stream a -> Stream b -> Stream c -> Stream d | Source

zipS :: Stream a -> Stream b -> Stream (a :*: b) | Source

combineS :: Stream Bool -> Stream a -> Stream a -> Stream a | Source

findS :: (a -> Bool) -> Stream a -> Maybe a | Source

findIndexS :: (a -> Bool) -> Stream a -> Maybe Int | Source

randomS :: (RandomGen g, Random a) => Int -> g -> Stream a | Source

randomRS :: (RandomGen g, Random a) => Int -> (a, a) -> g -> Stream a | Source

data SStream a | Source

Constructors

SStream |

segd :: Stream Int |
values :: Stream a |

segmentS :: Stream Int -> Stream a -> SStream a | Source

foldValuesSS :: (a -> b -> a) -> a -> SStream b -> Stream a | Source

fold1ValuesSS :: (a -> a -> a) -> SStream a -> Stream a | Source

combineSS :: Stream Bool -> SStream a -> SStream a -> Stream a | Source

(^+++^) :: SStream a -> SStream a -> Stream a | Source

Produced by Haddock version 2.4.2