[Haskell-cafe] Advice for clean code.
felipe.lessa at gmail.com
Tue Dec 4 05:13:49 EST 2007
On Dec 4, 2007 1:28 AM, Don Stewart <dons at galois.com> wrote:
> -- How to display results
> instance Show Action where
> show MoveOutOfBounds = "Sorry you can't move in that direction."
> show (MoveBadTerrain a) = case a of
> Wall -> "You walk into a wall."
> Tree -> "There is a tree in the way."
> otherwise -> "You can't move there."
> show MoveOk = "Good move."
I always thought show was meant for returning a String that could be
used to recreate the original data if you copy-pasted it in your code
or if you used read (i.e. read . show == id). Reading the
documentation more carefully, I see that  says that this property
holds for *derived* instances, and says nothing about it in the
So, what's the deal here? May I use Show for anything without breaking
conventions? And how about Read?
More information about the Haskell-Cafe