【问题标题】:Pari/GP: user defined functionsPari/GP:用户定义函数
【发布时间】:2013-01-25 05:13:32
【问题描述】:

我已经定义了几个 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(-)的定义有什么问题吗?

【问题讨论】:

    标签: pari-gp


    【解决方案1】:

    GP 用户函数返回最后评估的值。这里是结果 'print(j)' 命令,打印 j(副作用)并返回 'void', 当必须给它一个值时,它被类型转换为 0,就像这里一样。

    f1(x) = 10
    f2(x) = 2
    f3(x) = f1(x) - f2(x)
    

    正确返回 8。您没有提供 func1 / func2 的代码 功能,但我希望您包含一个“打印”语句,也许期待它 返回一个值。这就是为什么你会在 0 之前的不同行上获得输出。

    如果您不喜欢这种“return-last-evaluation-result”行为,您可以使用 明确的“返回(结果)”语句。

    【讨论】:

      猜你喜欢
      • 2015-07-30
      • 2018-02-25
      • 1970-01-01
      • 2023-04-09
      • 2014-08-23
      • 2014-03-10
      • 1970-01-01
      • 2021-04-19
      • 1970-01-01
      相关资源
      最近更新 更多