与えられたリスト内包表記を作成する方法
[(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」の場所を入れ替えることは、私が探している解決策ではありません。
与えられたリスト内包表記を作成する方法
[(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」の場所を入れ替えることは、私が探している解決策ではありません。
目的の出力では、最初のコンポーネントは常に少なくとも 2 番目のコンポーネントと同じ大きさであるため、1 からではなくi
から開始します。j
[(i,j) | j <- [1 .. 4], i <- [j .. 4]]
j <- [1 .. 4]
最初にジェネレーターをj
使用すると、 がスコープ内にあり、ジェネレーターに使用できますi
。
ブールガードを使用することもできます。
[(i,j) | i <- [1..4], j <- [1..4], i >= j]