Haskell中特定列表理解的解释

时间:2015-07-15 18:19:19

标签: haskell list-comprehension evaluation

我有关于列表理解的问题

[(x,y)| x<-[1..2], y<-[x..3], let z = x+y, odd z]

为什么评价为:

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

z在哪里?

由于

1 个答案:

答案 0 :(得分:4)

对于所有z odd&#34;,你的谓词是&#34; z = x + y。如果你&#34;展开&#34;流程:

z =谓词,​​y(x)表示:

x = 1,2
y (1) = 1,2,3
y (2) = 2,3

基于谓词过滤的值的组合:

x+y <= filter(z)

1+1 = 2 NO
1+2 = 3 OK
1+3 = 4 NO

2+2 = 4 NO
2+3 = 5 OK

所以ok答案是针对x = 1和y = 2且x = 2且y = 3 =&gt; [(1,2), (2,3)]

相关问题