Plan 9 from Bell Labs’s /usr/web/sources/contrib/fernan/nhc98/src/prelude/Prelude/Gcd.hs
module Prelude where 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' :: (Integral a) => a -> a -> a gcd' x 0 = x gcd' x y = gcd' y (x `rem` y)