Multicore programming in Haskell - Control.Parallel

后端 未结 4 958
误落风尘
误落风尘 2021-02-08 04:25

I\'m trying to learn how to use the Control.Parallel module, but I think I didn\'t get it right.

I\'m trying to run the following code (fibs.hs).

4条回答
  •  故里飘歌
    2021-02-08 04:40

    Since nobody gave a definitive answer about pseq, here's the official description:

    Semantically identical to seq, but with a subtle operational difference: seq is strict in both its arguments, so the compiler may, for example, rearrange a seq b into b seq a seq b. This is normally no problem when using seq to express strictness, but it can be a problem when annotating code for parallelism, because we need more control over the order of evaluation; we may want to evaluate a before b, because we know that b has already been sparked in parallel with par.

    This is why we have pseq. In contrast to seq, pseq is only strict in its first argument (as far as the compiler is concerned), which restricts the transformations that the compiler can do, and ensures that the user can retain control of the evaluation order.

提交回复
热议问题