在Scala中简化简单表达式

在Scala中简化简单表达式,scala,symbolic-math,Scala,Symbolic Math,我正在学习scala,并试图创建一种方法,通过应用简单的心律失常规则来简化一个简单的表达式。然而,这似乎并没有改变他们表达我喜欢的方式,或在所有的事情。当我打印出来时,简化没有显示出来。如果有任何帮助/建议,我将不胜感激,谢谢! 下面是我用来测试的print语句,后面是输出 println("Expression: " + exp) println("Simplified: " + simplify(exp)) 输出: 表达式:((1*x)+(0+y))您没有处理这些情况: case Time

我正在学习scala,并试图创建一种方法,通过应用简单的心律失常规则来简化一个简单的表达式。然而,这似乎并没有改变他们表达我喜欢的方式,或在所有的事情。当我打印出来时,简化没有显示出来。如果有任何帮助/建议,我将不胜感激,谢谢! 下面是我用来测试的print语句,后面是输出

println("Expression: " + exp)
println("Simplified: " + simplify(exp))
输出:


表达式:((1*x)+(0+y))您没有处理这些情况:

case Times(l, r) => Times(simplify(l), simplify(r))
case Sum(l, r) => Sum(simplify(l), simplify(r))
case Minus(l, r) => Minus(simplify(l), simplify(r))
case Divide(l, r) => Divide(simplify(l), simplify(r))

此外,您可能希望编写一个包装器,该包装器将不断简化,直到无法再简化为止(即,直到
simplify(x)=x
)。

您没有处理这些情况:

case Times(l, r) => Times(simplify(l), simplify(r))
case Sum(l, r) => Sum(simplify(l), simplify(r))
case Minus(l, r) => Minus(simplify(l), simplify(r))
case Divide(l, r) => Divide(simplify(l), simplify(r))

此外,您可能希望编写一个包装器,该包装器将不断简化,直到无法再简化为止(即,直到
simplify(x)=x
)。

添加这些案例后,我仍然收到来自println的相同输出(“simplified:+simplify(exp))@Branbron你是在比赛表情的结尾还是开头添加的?等等,我刚刚把它们放错地方了,谢谢!添加这些案例后,我仍然收到来自println的相同输出(“Simplified:“+simplify(exp))@Branbron您是在匹配表达式的末尾还是开头添加它们的?等等,我刚刚将它们放在了错误的位置,谢谢!你可能应该使用算术规则,而不是心律失常规则(没有节奏的规则)!你可能应该使用算术规则,而不是心律失常规则(没有节奏的规则)!