【发布时间】:2012-03-15 22:40:53
【问题描述】:
object Prop {
def simplify(prop : Prop) : Prop = {
prop match {
case Not(Or(a,b)) => simplify(And(Not(a),Not(b)))
case Not(And(a,b)) => simplify(Or(Not(a),Not(b)))
case Not(Not(a)) => simplify(a)
case _ => {
if (simplify(prop) == prop) prop
else prop
}
}
}
}
我很确定我的“默认”情况导致了无限循环。我在所有情况下都使用递归。这意味着,但是,只有在 Prop 可以简化的情况下。一旦 Prop 不能被简化,它应该返回整个东西。
我不知道如何测试任何进一步的简化。 (我不允许使用其他库,正如 freenodes #scala 频道中所建议的那样)。
有人可以解释是否是导致循环的“案例_”,以及如何解决它?如何在不循环的情况下测试可能的简化?
提前致谢!
【问题讨论】:
标签: scala loops pattern-matching case