
On Tue, Sep 05, 2006 at 12:11:20PM +0100, Ross Paterson wrote:
[..] You seem to be using special instances to do two things: add spacing and remove extraneous parentheses. A neater way to do the latter would be to use the precedence parameter of showsPrec for Term to control whether the parentheses are added in the first place, e.g. (untested)
showsPrec p t = (case t of VarT v -> shows v App f [] [] -> showString (name f) App f [] [r] -> showParen (p > app_prec) $ showString (name f) . showChar ' ' . showsPrec (app_prec+1) r ... where app_prec = 10
Thank you very much. I have to study this. Because I always defined Show via showsPrec, and also was always missing of what is the first argument of showsPrec.