0

与えられたリスト内包表記を作成する方法

[(i,j) | i <- [1..4], j <- [1..4]] yields the following:

[(1,1),(2,1),(3,1),(4,1),(2,2),(3,2),(4,2),(3,3),(4,3),(4,4)]

つまり、j に関するすべての組み合わせをリストしますか?

PS。「i」と「j」の場所を入れ替えることは、私が探している解決策ではありません。

4

2 に答える 2

9

目的の出力では、最初のコンポーネントは常に少なくとも 2 番目のコンポーネントと同じ大きさであるため、1 からではなくiから開始します。j

[(i,j) | j <- [1 .. 4], i <- [j .. 4]]

j <- [1 .. 4]最初にジェネレーターをj使用すると、 がスコープ内にあり、ジェネレーターに使用できますi

于 2013-03-23T22:12:41.387 に答える
1

ブールガードを使用することもできます。

[(i,j) | i <- [1..4], j <- [1..4], i >= j]
于 2013-03-23T23:25:16.857 に答える