Haskell版本的双循环

Tom*_*tes 0 iteration haskell loops functional-programming duplicates

我需要在Haskell中执行以下操作,并且无法想到正确的方法:

for (int i=0; i<100; i++)
  for (int a=0; a<100; a++)
     foo = (i, a);
Run Code Online (Sandbox Code Playgroud)

我也不希望'重复'返回,所以不是(1,50)和(50,1).关于如何做到这一点的任何想法?

Aad*_*hah 7

您可以使用列表推导:

foo :: [(Int, Int)]
foo = [(i, a) | i <- [0..99], a <- [i..99]]
Run Code Online (Sandbox Code Playgroud)

请注意,Haskell中没有突变.因此,你不能改变它的价值foo.这就是为什么我把它变成了一个列表.