The idea I’m currently working on a new GHC extension called monad comprehensions. Monad comprehension is a generalization for list comprehensions, as you know them from standard Haskell98 / Haskell2010: > l :: [(Int,Int)] > l = [ (x,y) | x <- [1..3], y <- [1..x], odd x ] *Main> l [(1,1),(3,1),(3,2),(3,3)] And as you may or may not know, you can rewrite this using the list monad: > l_monad :: [(In