Portability | not portable |
---|---|
Stability | beta |
Maintainer | eden@mathematik.uni-marburg.de |
Safe Haskell | Safe-Infered |
Control.Parallel.Eden.Edi
Description
The low-level parallel functional language: EDen Implementation language
This module defines a thin layer of type-checking wrappers over the parallel primitives implemented in ParPrim.hs.
Depends on the Eden Compiler.
Eden Group Marburg
- fork :: IO () -> IO ()
- spawnProcessAt :: Int -> IO () -> IO ()
- spawnArgsProcessAt :: NFData a => Int -> (a -> IO ()) -> a -> IO ()
- data ChanName' a
- createC :: IO (ChanName' a, a)
- createCs :: Int -> IO ([ChanName' a], [a])
- sendWith :: Strategy a -> ChanName' a -> a -> IO ()
- sendNF :: NFData a => ChanName' a -> a -> IO ()
- sendStreamWith :: (a -> ()) -> ChanName' [a] -> [a] -> IO ()
- sendNFStream :: NFData a => ChanName' [a] -> [a] -> IO ()
- noPe :: IO Int
- selfPe :: IO Int
- class NFData a where
- rnf :: a -> ()
- using :: a -> Strategy a -> a
- r0 :: Strategy a
- rseq :: Strategy a
- rdeepseq :: NFData a => Strategy a
- seqList :: Strategy a -> Strategy [a]
- seqFoldable :: Foldable t => Strategy a -> Strategy (t a)
Documentation
class NFData a where
A class of types that can be fully evaluated.
Methods
rnf :: a -> ()
rnf should reduce its argument to normal form (that is, fully evaluate all sub-components), and then return '()'.
The default implementation of rnf
is
rnf a = a `seq` ()
which may be convenient when defining instances for data types with no unevaluated fields (e.g. enumerations).
Instances
NFData Bool | |
NFData Char | |
NFData Double | |
NFData Float | |
NFData Int | |
NFData Int8 | |
NFData Int16 | |
NFData Int32 | |
NFData Int64 | |
NFData Integer | |
NFData Word | |
NFData Word8 | |
NFData Word16 | |
NFData Word32 | |
NFData Word64 | |
NFData () | |
NFData Version | |
NFData a => NFData [a] | |
(Integral a, NFData a) => NFData (Ratio a) | |
NFData (Fixed a) | |
(RealFloat a, NFData a) => NFData (Complex a) | |
NFData a => NFData (Maybe a) | |
NFData (ChanName' a) | |
NFData (Comm a) | |
NFData (Comm a) | |
NFData (a -> b) | This instance is for convenience and consistency with |
(NFData a, NFData b) => NFData (Either a b) | |
(NFData a, NFData b) => NFData (a, b) | |
(Ix a, NFData a, NFData b) => NFData (Array a b) | |
(NFData k, NFData a) => NFData (Map k a) | |
(NFData a, NFData b, NFData c) => NFData (a, b, c) | |
(NFData a, NFData b, NFData c, NFData d) => NFData (a, b, c, d) | |
(NFData a1, NFData a2, NFData a3, NFData a4, NFData a5) => NFData (a1, a2, a3, a4, a5) | |
(NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6) => NFData (a1, a2, a3, a4, a5, a6) | |
(NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7) => NFData (a1, a2, a3, a4, a5, a6, a7) | |
(NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7, NFData a8) => NFData (a1, a2, a3, a4, a5, a6, a7, a8) | |
(NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7, NFData a8, NFData a9) => NFData (a1, a2, a3, a4, a5, a6, a7, a8, a9) |
rdeepseq :: NFData a => Strategy a
rdeepseq
fully evaluates its argument.
Relies on class NFData
from module Control.DeepSeq.
seqList :: Strategy a -> Strategy [a]
Evaluate each element of a list according to the given strategy.
This function is a specialisation of seqFoldable
to lists.
seqFoldable :: Foldable t => Strategy a -> Strategy (t a)
Evaluate the elements of a foldable data structure according to the given strategy.