-- parMap abstraction enables us to apply parallelism to
-- all the elements of a list.

parMap :: (a -> b) -> [a] -> Eval [b]
parMap f xs = mapM (rpar . f) xs
parMap :: (a -> b) -> [a] -> Eval [b]
parMap f xs = mapM (rpar . f) xs
parMap f xs = mapM (rpar . f) xs