Haskell错误:"(n + k)模式中的第一个参数必须是变量" - 但是如何?

Sam*_*inn 2 haskell

我正在尝试创建一个无限的毕达哥拉斯值列表,但我遇到了一个问题.

pytrips = [(x, y, z) | z <- [1..], y <- [1..z], x <- [1..y],
           (x^2 + y^2) <- z^2, gcd x y == 1]
Run Code Online (Sandbox Code Playgroud)

我的错误如此:

"First argument in (n+k) pattern must be a variable"

我不太明白我为此做了什么语法问题,因为该方法不需要传递任何参数.任何人都可以帮我解决这个问题吗?

Dan*_*ner 7

你可能想写==而不是<-:

pytrips = [(x, y, z) | z <- [1..], y <- [1..z], x <- [1..y],
           x^2 + y^2 == z^2, gcd x y == 1]
Run Code Online (Sandbox Code Playgroud)