对此Haskell表达式的答案

时间:2019-01-12 18:04:42

标签: haskell expression list-comprehension

以下表达式[y | x <- [1..3], y <- [x..x*2]]产生答案[1, 2, 2, 3, 4, 3, 4, 5, 6]

有人可以解释获得此答案的步骤吗?

1 个答案:

答案 0 :(得分:2)

它就像一个foreach循环,所以

foreach (x in [1..3]) {
  foreach (y in [x .. x * 2]) {
    yield y;
  }
}

第一个x为1,所以[1 .. 2]中的y

然后x是2,所以[2 .. 4]中的y

然后x是3,所以[3 .. 6]中的y

将这些结果连接在一起,您将获得最终结果。