How to show anything
- Standalone deriving
- When you can’t derive
- Printing in GHCi with
- Printing with generics
Suppose we have some value that we want to print for debugging.
λ> thePerson = Dog True λ> thePerson <interactive>:7:1: error: • No instance for (Show Person) arising from a use of ‘print’ • In a stmt of an interactive GHCi command: print it
Oh no! – The error message
No instance for (Show Person)
is telling us that the author of the
Person type didn’t give it a
Show instance, so GHCi doesn’t know how to print it for us.
So what can we do?
There is no “universal way to print anything” in Haskell, but there is usually something you can do in this situation. Here we discuss a variety of ways to print a value if there isn’t a
Show instance available.