From 36dfc2e2fe3a7cf2e46f571a573d5196349964c4 Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Fri, 25 Aug 2006 11:06:10 +0000 Subject: [PATCH] add docs for par --- Control/Parallel.hs | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/Control/Parallel.hs b/Control/Parallel.hs index 9aae049..21c9fed 100644 --- a/Control/Parallel.hs +++ b/Control/Parallel.hs @@ -22,7 +22,7 @@ module Control.Parallel ( import Prelude #ifdef __GLASGOW_HASKELL__ -import GHC.Conc ( par ) +import qualified GHC.Conc ( par ) #endif #if defined(__GRANSIM__) @@ -54,7 +54,27 @@ parAtForNow (I# w) (I# g) (I# s) (I# p) v x y = case (parAtForNow# x v w g s p y #endif -- Maybe parIO and the like could be added here later. -#ifndef __GLASGOW_HASKELL__ + +-- | Indicates that it may be beneficial to evaluate the first +-- argument in parallel with the second. Returns the value of the +-- second argument. +-- +-- @a `par` b@ is exactly equivalent semantically to @b@. +-- +-- @par@ is generally used when the value of @a@ is likely to be +-- required later, but not immediately. Also it is a good idea to +-- ensure that @a@ is not a trivial computation, otherwise the cost of +-- spawning it in parallel overshadows the benefits obtained by +-- running it in parallel. +-- +-- Note that actual parallelism is only supported by certain +-- implementations (GHC with the @-threaded@ option, and GPH, for +-- now). On other implementations, @par a b = b@. +-- +par :: a -> b -> b +#ifdef __GLASGOW_HASKELL__ +par = GHC.Conc.par +#else -- For now, Hugs does not support par properly. par a b = b #endif -- 1.7.10.4