我已经定义了arity 1的几个函数,比如说func1(-)
和func2(-)
。我测试了它们,发现它们实际上是按照它们应该做的。
我希望定义第三个函数,比如说func3(-)
,它输出func1(-)
和func2(-)
的差异。这就是我的工作
func3(k) = {j=func1(k)-func2(k); print(j)}
尽管如此,它还没有回归到它应该做的事情。让我们假设func1(5)
输出10和func2(5)
输出2.然后,func3(5)
应该输出8,对吗?它在一行中返回func1(5)
的输出,在另一行中返回func2(2)
的输出,然后返回零(即使相应输出的差异不是0)。
您知道func3(-)
的定义有什么问题吗?
答案 0 :(得分:4)
GP用户函数返回上次评估的值。在这里,它是的结果 'print(j)'命令,打印j(副作用)并返回'void', 当必须给出一个值时,它被强制转换为0,如此处所示。
f1(x) = 10
f2(x) = 2
f3(x) = f1(x) - f2(x)
正确返回8.您没有给出func1 / func2的代码 函数,但我希望你包含一个'print'语句,也许期待它 返回一个值。这就是为什么你在0之前获得不同行的输出。
如果你不喜欢这种'return-last-evaluation-result'行为,你可以使用 显式'return(result)'语句。