Haskell is a compiled language. Functions are, internally, just code. It doesn't really make sense to Show
them. Even if it was possible, it'd probably not be desirable, because it would most likely mean that extensionally equal functions have different String
representations, and/or that compiler optimisations would be visible in the String
that is being generated.
The only things you can do are: define a dummy representation for all functions, or define a specific instance for specific function types with small domains (say, functions of type Bool -> Bool
or Bool -> Int
) that can still easily be observed completely from the outside.