我在这里发现了一种"奇怪"的行为.我懂了:
{-# LANGUAGE BangPatterns #-}
import Data.List
import Control.Parallel
import Control.Parallel.Strategies
fib 0 = 1
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
main =
let xs = [ fib (20 + n `mod` 2) | n <- [0..1000] ]
`using` test rseq
in print (sum xs)
test :: Strategy a -> Strategy [a]
test strat xs = do
parTraversable strat xs -- case #1
-- parList strat xs -- case #2
return xs
Run Code Online (Sandbox Code Playgroud)
case #1 …