Haskell的子集操作并没有给我所有结果,只显示了部分结果?

时间:2016-03-02 03:55:49

标签: haskell filter list-comprehension

我已经学习了LYAH,第1章中的最后一个问题是找到abc (a,b,c)形成一个直角三角形,以及他们的总和是24. abc都是Int s。

所以我有下面的代码(本书不一样)。

Prelude> [(a,b,c)|c<-[1..10],b<-[1..10],a<-[1..10],a^2+b^2==c^2,a+b+c==24]
[(8,6,10),(6,8,10)]

我希望得到所有可能的组合,比如

[(8,6,10),(6,8,10),(8,10,6),(6,10,8),(10,6,8),(10,8,6)]

为什么只显示部分内容?我尝试了不同版本的ghci,但结果相同。感谢。

1 个答案:

答案 0 :(得分:6)

你守护a^2 + b^2 == c^2,但是对于(8, 10, 6)8^2 + 10^2 == 6^2并非如此。因此,它们不包括在结果中。