> import Control.Monad > cartesian xs ys = > liftM2 pair xs ys > where pair a b = (a, b) $ cartesian [1,2,3] [4,5,6] [(1,4),(1,5),(1,6),(2,4),(2,5),(2,6),(3,4),(3,5),(3,6)] Consider my imperative brain just eaten by a monad. I had come to understand monads to be something like a way to string computations together so that they would [ READ MORE ]