foo n = do i <- [1..n] j <- [i..n] k <- [j..n] bar n = [ (i, j, k) | i <- [1..n], j <- [i..n], k <- [j..n] ] [j..n]) [i..n]) [1..n] main = let n = 3 in forM_ [foo, bar, baz] $ \f -> print $ f n
Standard input is empty
[(1,1,1),(1,1,2),(1,1,3),(1,2,2),(1,2,3),(1,3,3),(2,2,2),(2,2,3),(2,3,3),(3,3,3)] [(1,1,1),(1,1,2),(1,1,3),(1,2,2),(1,2,3),(1,3,3),(2,2,2),(2,2,3),(2,3,3),(3,3,3)] [(1,1,1),(1,1,2),(1,1,3),(1,2,2),(1,2,3),(1,3,3),(2,2,2),(2,2,3),(2,3,3),(3,3,3)]