Fri Jul 7 08:33:22 UTC 2017

```I'm looking into using rpar and rseq from Control.Parallel.Strategies. The
issue is that most of my code executes in a monad stack including StateT
and ExceptT. Can I use the Eval monad at the root of the stack safely?

D

On Thu, Jul 6, 2017 at 10:06 PM, Dennis Raddle <dennis.raddle at gmail.com>
wrote:

> thanks for the tip, that book is great... I'm reading it now, and it's an
> easy read, very clear explanations of laziness. I never understood laziness
> all that well before.
>
> D
>
> On Thu, Jul 6, 2017 at 10:34 AM, Rein Henrichs <rein.henrichs at gmail.com>
> wrote:
>
>> Please take a look at Simon Marlow's free book, *Parallel and Concurrent
>> reilly.com/books/1230000000929). It will teach you a lot about... the
>> things in the title.
>>
>> On Thu, Jul 6, 2017 at 10:21 AM Claude Heiland-Allen <claude at mathr.co.uk>
>> wrote:
>>
>>> Hi Dennis,
>>>
>>> On 06/07/17 17:53, Dennis Raddle wrote:
>>> > I have a program which does backtracking search in a recursive
>>> > function.  I followed the chapter in "Real World Haskell" to
>>> parallelize it.
>>> [snip]
>>> > There's no effect from the R.W.H. ideas. Can I get some suggestions as
>>> > to why?
>>>
>>> You can get timing and other useful diagnostics by compiling with
>>> -rtsopts and running with +RTS -s, no need to measure CPU time in your
>>> own program.
>>>
>>> > force :: [a] -> ()
>>> > force xs = go xs `pseq` ()
>>> >   where go (_:xs) = go xs
>>> >         go [] = 1
>>>
>>> This force doesn't do enough, it just walks the spine. Try this, which
>>> forces the elements as well as the shape:
>>>
>>> force :: [a] -> ()
>>> force xs = go xs `pseq` ()
>>>   where go (x:xs) = x `pseq` go xs
>>>         go [] = 1
>>>
>>> Thanks,
>>>
>>>
>>> Claude
>>> --
>>> https://mathr.co.uk
>>> _______________________________________________
>>> To (un)subscribe, modify options or view archives go to:
>>> Only members subscribed via the mailman list are allowed to post.
>>
>>
>> _______________________________________________