未经测试的伪代码:
instance Show Formula where
showsPrec _p True = "True"
showsPrec _p False = "False"
showsPrec p (And f1 f2) = showParen (p > 5) $
showsPrec 5 f1 . (" & " ++) . showsPrec 5 f2
showsPrec p (Forall x f) = showParen (p > 8) $
("forall " ++ x ++) . showsPrec 8 f
...
showString
而不是那些
++
上面。不管怎样,我想它应该会起作用的。)
上面,整数
p
表示显示当前公式的上下文的优先级。例如,如果我们展示
f
里面
f & ...
然后
优先级别为
&
.
如果需要在优先级较高的上下文中打印符号,则需要添加括号。E、 g.如果
f型
a | b
我们不能写
a | b & ...
,否则解释为
a | (b & ...)
a | b公司
showParen (p > ...)
.
上面,我随机选择了优先级别。你需要根据你的口味调整它们。您还应该检查选择的级别是否与标准库一起播放。E、 g.印刷
Just someFormula
不应该产生
Just a & b
,但添加括号。