One of the defining features of a EuclideanRing is that you can divide any
pair of elements, as long as the divisor is nonzero. Specifically, if you have
a euclidean ring R, with x, y in R, and y /= zero, we need to have x = (x / y) * y + (x `mod` y).
We do have a Ring b => Ring (a -> b) instance, where multiplication is
defined as follows:
instance ringFunction :: Ring b => Ring (a -> b) where
  [...]
  mul f g x = f x * g x
  [...]that is, the product of two functions f and g is a new function which
applies its argument to each of f and g and returns the product of the
results.
Given this, if we were going to define a EuclideanRing b => EuclideanRing (a -> b) instance, we would probably want to define div as follows:
instance euclideanRingFunction :: EuclideanRing b => EuclideanRing (a -> b) where
  [...]
  div f g x = f x / g x
  [...]This, unfortunately, won't do. Suppose that we choose a function g such that
there exists some x with g x = zero, but also g is not constant. The zero
function in this context is constant, i.e. it is equal to \_ -> zero, and
therefore g is not the zero function, or in other words, g is nonzero. Since g is
nonzero, we should be able to divide by it. Now, consider the expression (f / g) x; this will be the same as f x / g x, which by assumption, is equal to
f x / zero. But this is undefined, so f / g is undefined.
Essentially, if we want to define division of functions in this manner, the
EuclideanRing laws say that division has to work as long as the divisor is
nonzero. To divide functions, we need a much stronger guarantee than these laws
can give us: namely, that zero does not appear anywhere in the image of the
divisor.