There are two reasonable ways to define an applicative functor instance for lists. Both of them simulate kinds of parallel computers:
- The plain instance simulates a non-deterministic computer. This instance can also be generalized to monads.
- The applicative functor instance of the wrapper simulates a SIMD (single-instruction multiple-data) computer.ZipList