Hello Tim, Tuesday, November 6, 2007, 3:13:05 AM, you wrote:
> Is it possible to use the forkIO primitive to cause pure computations > to be evaluated in parallel threads? > It seems to me that laziness would always prevent any evaluation until > the result was used in a consuming thread (and hence would occur > serially, in that thread). yes, that's true. but we can force evaluation of array elements: task (i,j) = do putArray arr (i,j) (i*j) return $! getArray arr (i,j) in the Andrew's case, array in unboxed, so putArray will evaluate its argument without additional return$! on the other side, he can use boxed immutable array and use tasks exactly to enforce evaluation of lazy boxes: let arr = array (0,0) (10,10) [i*j | i<-0..10, j<-0..10] let task (i,j) = return $! elemArray arr (i,j) -- Best regards, Bulat mailto:[EMAIL PROTECTED] _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe