On Feb 12, 2007, at 11:02 AM, [EMAIL PROTECTED] wrote:
Hello,
the "Advanced Monads" page in the Haskell Wikibook
(http://en.wikibooks.org/wiki/Haskell/Advanced_monads) contains the
following
example of a List Monad
pythags = do
x <- [1..]
y <- [x..]
z <- [y..]
guard (x^2 + y^2 == z^2)
return (x, y, z)
However, whenever you load that function definition into Hugs or
GHCi, you get a
message saying that "guard" is an undefined variable.
Does anyone know why?
Thanks.
phiroc
Another note about this function -- it doesn't actually work. It
will forever try increasing values of z, trying to find a z such that
z^2 = 1^2 + 1^2, and no such z exists. The following function,
however, does seem to correctly generate all the Pythagorean triples.
pythags = do
z <- [1..]
x <- [1..z]
y <- [x..z]
guard (x^2 + y^2 == z^2)
return (x,y,z)
Rob Dockins
Speak softly and drive a Sherman tank.
Laugh hard; it's a long way to the bank.
-- TMBG
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe