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.