More parentheses when printing values
authorArseniy Alekseyev <rotsor@gmail.com>
Wed, 26 Apr 2017 22:14:31 +0000 (23:14 +0100)
committerArseniy Alekseyev <rotsor@gmail.com>
Wed, 26 Apr 2017 23:10:48 +0000 (00:10 +0100)
Fixes a bug where not enough parentheses would be printed.
Previously if a function F is defined by split, `F (F x)` would be printed as `F F x`.
Now it's printed as `F (F x)` as it should.

CTT.hs

diff --git a/CTT.hs b/CTT.hs
index 0c14a12d285989dc31e3cf78f5aeba3acb46cb4f..9b068644f4e4673965f7275096a6c4e46c9941d3 100644 (file)
--- a/CTT.hs
+++ b/CTT.hs
@@ -484,10 +484,7 @@ showVal1 v = case v of
   VVar{}            -> showVal v
   VFst{}            -> showVal v
   VSnd{}            -> showVal v
-  Ter t@Sum{} rho   -> showTer t <+> showEnv False rho
-  Ter t@HSum{} rho  -> showTer t <+> showEnv False rho
-  Ter t@Split{} rho -> showTer t <+> showEnv False rho
-  Ter t rho         -> showTer1 t <+> showEnv True rho
+  Ter t rho | showEnv False rho == PP.empty -> showTer1 t
   _                 -> parens (showVal v)
 
 showVals :: [Val] -> Doc