|Version 3 (modified by ross@…, 10 years ago) (diff)|
Parallel List comprehensions
Parallel comprehensions extend list comprehensions with a notation for zips. The comprehension
[ e | quals1 | ... | qualsN ]
can be desugared to
zipWithN (\ p1 ... pN -> e) [p1 | quals1] ... [pN | qualsN]
where pi is a tuple of the variables defined by qualsi and used by e.
- Parallel list comprehensions in the GHC User's Guide
- add Parallel List comprehensions
- Easy and well-specified
- Not widely used, and not hugely more concise than using explicit zips.
- Naive users can trip over them if they misplace a '|'.
- In its more general forms it's hard to predict how the elements from each set of generators and filters will match up, e.g.
[(i,j,k) | i <- [1..3], j <- [1..3] | k <- [1..9]]
- The notation expresses zips of filters and maps, but not filters of zips, which are more common.