Ну, один очень простой способ сделать это будет со списком:
cartProd :: [a] -> [b] -> [(a, b)] cartProd xs ys = [(x, y) | x <- xs, y <- ys]
Я полагаю, что я это сделаю, хотя я не специалист Haskell (каким-либо образом ).