Copyright  (c) Philipps Universitaet Marburg 20092014 

License  BSDstyle (see the file LICENSE) 
Maintainer  eden@mathematik.unimarburg.de 
Stability  beta 
Portability  not portable 
Safe Haskell  None 
Language  Haskell98 
This Haskell module defines auxiliary functions for programming with the parallel functional language Eden.
Depends on GHC. Using standard GHC, you will get a threaded simulation of Eden. Use the forked GHCEden compiler from http://www.mathematik.unimarburg.de/~eden for a parallel build.
Eden Group ( http://www.mathematik.unimarburg.de/~eden )
 unshuffle :: Int > [a] > [[a]]
 shuffle :: [[a]] > [a]
 splitIntoN :: Int > [a] > [[a]]
 unSplit :: [[a]] > [a]
 chunk :: Int > [a] > [[a]]
 unchunk :: [[a]] > [a]
 distribute :: Int > [Int] > [t] > [[t]]
 lazy :: [a] > [a]
 lazy1ZipWith :: (a > b > c) > [a] > [b] > [c]
 lazy2ZipWith :: (a > b > c) > [a] > [b] > [c]
 lazy1Zip :: [a] > [b] > [(a, b)]
 lazy2Zip :: [a] > [b] > [(a, b)]
 lazyTranspose :: [[a]] > [[a]]
 takeEach :: Int > [a] > [a]
 transposeRt :: [[a]] > [[a]]
 unLiftRD :: (Trans a, Trans b) => (RD a > RD b) > a > b
 unLiftRD2 :: (Trans a, Trans b, Trans c) => (RD a > RD b > RD c) > a > b > c
 unLiftRD3 :: (Trans a, Trans b, Trans c, Trans d) => (RD a > RD b > RD c > RD d) > a > b > c > d
 unLiftRD4 :: (Trans a, Trans b, Trans c, Trans d, Trans e) => (RD a > RD b > RD c > RD d > RD e) > a > b > c > d > e
 spawnPss :: (Trans a, Trans b) => [[Process a b]] > [[a]] > [[b]]
 fetch2 :: (Trans a, Trans b) => RD a > RD b > (a, b)
 fetchRDss :: Trans a => [[RD a]] > [[a]]
 mergeS :: [[a]] > Strategy a > [a]
Distribution and combine functions
... of form: Int > [a] > [[a]]
/ [[a]] > [a]
:: Int  number of sublists 
> [a]  input list 
> [[a]]  distributed output 
Round robin distribution  inverse to shuffle
:: [[a]]  sublists 
> [a]  shuffled sublists 
Simple shuffling  inverse to round robin distribution
:: Int  number of blocks 
> [a]  list to be split 
> [[a]]  list of blocks 
Block distribution, splitIntoN
distributes one list on n lists with
equal distribution ((+1) without precondition on length).
:: [[a]]  list of blocks 
> [a]  restored list 
Inverse function to splitIntoN
 alias for concat.
:: Int 

> [a]  list to be split 
> [[a]]  list of chunks (blocks) 
Creates a list of chunks of length d
.
Result: list of chunks (blocks)
:: [[a]]  list of chunks 
> [a]  restored list 
Inverse function to chunk
 alias for concat.
Distribution function for workpools
:: Int  number of workers 
> [Int]  request stream (worker IDs ranging from 0 to n1) 
> [t]  task list 
> [[t]]  task distribution, each inner list for one worker 
Task distribution according to worker requests.
Lazy functions
lazy1ZipWith :: (a > b > c) > [a] > [b] > [c] Source
lazy in first argument
lazy2ZipWith :: (a > b > c) > [a] > [b] > [c] Source
lazy in second argument
lazyTranspose :: [[a]] > [[a]] Source
lazy in tail lists
other useful functions
transposeRt :: [[a]] > [[a]] Source
transpose for matrices of rectangular shape (rows of equal length). Top level list of the resulting matrix is defined as soon as the first row of the original matrix is closed.
unLiftRDs
:: (Trans a, Trans b, Trans c)  
=> (RD a > RD b > RD c)  Function to be unlifted 
> a  First input 
> b  Second input 
> c  output 
see liftRD
unLiftRD3 :: (Trans a, Trans b, Trans c, Trans d) => (RD a > RD b > RD c > RD d) > a > b > c > d Source
see liftRD
unLiftRD4 :: (Trans a, Trans b, Trans c, Trans d, Trans e) => (RD a > RD b > RD c > RD d > RD e) > a > b > c > d > e Source
see liftRD