Sadly not! The snag is that we’re forming the Cartesian product of the lists, rather than forming new lists by matching up the nth elements of the old ones.

ZipList to the rescue

Recall that the Cartesian product comes from the monad instance for lists, but you can make a different but perfectly good Applicative instance called ZipList. Here’s an illustration of the difference: