The documentaion for parBuffer says
parBuffer :: Int -> Strategy a -> Strategy [a]
Like evalBuffer but evaluates the list elements in parallel when pushing them into the buffer."
evalBuffer :: Int -> Strategy a -> Strategy [a]
evalBuffer is a rolling buffer strategy combinator for (lazy) lists. evalBuffer is not as compositional as the type suggests. In fact, it evaluates list elements at least to weak head normal form, disregarding a strategy argument r0."
The first part of my question is does this mean that parBuffer also disregard its strategy argument? Also why would it even provide a Strategy argument if it just disregards it?
The second part of my question is how does one determine which size of buffer to use with parBuffer? If parBuffer always maintains a buffer size of n, what is the difference between n=1 and n=10 other than more sparks must be kept in memory? I was thinking it might be wise to pick n=<number of threads>" but I don't know how that would improve anything because parBuffer will still create a spark whenever a spark is consumed, regardless of whether n=1 or n=4.