我有函数pyths
:
-- takes an Int and returns a list of pythagorean triples whose components
---- are at most the given Int
pyths :: Int a => a -> [(Int, Int, Int)]
pyths n = [(x, y, z) | x <- f, y <- f, z <- f, x^2 + y^2 == z^2]
where f = factors n
我收到factors
超出范围的错误。 如何编写此功能以便 范围内的?
我试过了:
pyths n = [(x, y, z) | x <- f, y <- f, z <- f, x^2 + y^2 == z^2 where f = factors n]
和
pyths n = [(x, y, z) | x <- f, y <- f, z <- f, x^2 + y^2 == z^2, where f = factors n]
但后来我只是语法错误。
注意: 我知道这可能实际上并不是我打算做的事情。
答案 0 :(得分:4)
正如sepp2k所说,你需要定义factors
。在您的示例中,您可以更改定义f
的位置,其中使用了定义中的因子,但没有您说的位置:
factors x = ...
由于Haskell前奏或其他基本库中没有定义factors
函数,因此您必须自己编写。我希望primes包对您有用。