[snip] >I don't think there is a way to /prove/ f (g a) == g (f a) if their >domain is not finite inside Haskell (you could do it with pen and paper). [snip] Just out of interest, could you demonstrate the proof without a finite domain? Sincerely, Matthew