>>942は答えとして正しくないと思うんだけどな
(0 to 2).flatMap((x) => (x to 2).map((x, _)))
for (x <- List.range(0, 3); y <- List.range(x, 3)) yield (x, y)
内包表記のほうが読みやすいし,(x, y, z)に拡張するのもやりやすいよね