gpt4 book ai didi

function - 在 APL 中将函数作为参数传递

转载 作者:行者123 更新时间:2023-12-04 16:53:18 27 4
gpt4 key购买 nike

如何将函数作为参数传递?

基本思想是这样的(这不起作用):

∇R ← double a
R ← 2 × a


∇R ← a applytwice f
R ← f f a


5 applytwice double

有没有类似 \fun在 erlang 中还是在 C 中的函数指针中?

最佳答案

在 APL 中,函数不能作为参数传递给函数。但是,APL 具有运算符,它们是高阶函数,可以将函数作为参数。有像/(归约)这样的原始运算符,用于对向量 +/v 求和。函数 + 是左操作数,传递给运算符/。

在 Dyalog APL 中,有一个原始运算符使用(名为“power”)来应用函数 n 次,因此我们可以编写:

      double←{2×⍵}
(double ⍣ 2) 7
28
(double ⍣ 10) 7
7168

您还可以编写自己的运算符(在大多数 APL 中)。在 Dyalog APL 中,我们可以将您的 applytwice 运算符编写为:
     applytwice←{⍺⍺ ⍺⍺ ⍵}
double applytwice 7
28

最后,您可以通过将函数放在命名空间中并传递命名空间来传递函数。这就像一个带有方法的类的非常轻量级的实例。例如:
       s←⎕NS ''
s.f←{2×⍵}
ApplyFTwice←{⍺.f ⍺.f ⍵}
s ApplyFTwice 7
28

在这种情况下,函数必须命名为 f,但我们可以将许多不同的函数命名为 f,每个函数都在自己的命名空间中。

关于function - 在 APL 中将函数作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19845964/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com