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
}
}
}
}
I ' Я почти уверен, что у меня бесконечный цикл, вызванный моим «дефолтным» случаем. Я использую рекурсию во всех случаях. Что и должно быть, но только если опору можно упростить. Как только Prop не может быть упрощен, он должен вернуть все это целиком.
Я не понимаю, как я могу проверить дальнейшее упрощение. (Мне не разрешено использовать другие библиотеки, как это предлагается в канале freenodes #scala).
Может ли кто-нибудь объяснить, является ли «случай _» причиной петли, и как ее решить? Как я могу проверить возможное упрощение без создания цикла?
Заранее спасибо!