S.D.Mechveliani wrote
Does the Report specify that gcd 0 0 is not defined? Yes. The Report definition says gcd :: (Integral a) => a -> a -> a gcd 0 0 = error "Prelude.gcd: gcd 0 0 is undefined" gcd x y = gcd' (abs x) (abs y) where gcd' x 0 = x gcd' x y = gcd' y (x `rem` y)
On reflection, this is quite right. a divides b <=> there is an integer n with na = b. Thus any integer divides 0, and so the "greatest common divisor" would have to be the greatest integer, which is nonsense. Of course if you adopt Stephan Kahrs definition of "greatest", taken with respect to the partial order a<=b <=> a divides b, then gcd 0 0 = 0, because 0 is indeed the greatest integer in this ordering. Mathematically this makes sense, but it's not necessarily what people expect.