列出对特定表格的理解

War*_*ive 0 haskell list-comprehension

如何创建这样的列表理解给出

[(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)]
Run Code Online (Sandbox Code Playgroud)

即列出关于j的所有组合?

PS.交换"i"和"j"的地方不是我想要的解决方案.

Dan*_*her 9

因为在你想要的输出中,第一个组件总是至少和第二个组件一样大,让我们从1 i开始j,而不是从1开始:

[(i,j) | j <- [1 .. 4], i <- [j .. 4]]
Run Code Online (Sandbox Code Playgroud)

首先使用j <- [1 .. 4]发电机,j它在范围内并且可以用于i发电机.