Implementación de “show” para función.

Me gustaría implementar elshow Método para las funciones (binarias) y permitirle distinguir funciones finales(a -> a).

Algo así como el código pseudo-haskell:

instance Show (a->b) where
    show fun = "<<Endofunction>>" if a==b
    show fun = "<<Function>>" if a\=b

¿Cómo puedo distinguir los dos casos?