函数中可以 return lambdas 吗?

Is it possible to return lambdas in a function?

考虑以下函数,它应该 return 一个将任何给定参数加 2 的函数:

∇r←addtwo
  r←{⍵+2}
∇

此代码加载时没有任何错误,但我无法在不导致错误的情况下使用 return 值。

      addtwo ⍝ doesn't cause errors
      addtwo 1
VALUE ERROR
      addtwo 1
      ^
      x←addtwo
VALUE ERROR
      x←addtwo
      ^

我正在使用 GNU-APL 1.8

我相信Dyalog APL is the only implementation allowing this. Try it online!

尽管这可行,但这不是 APL 的正常处理方式。您可能想改写 your own operator

您打算做的通常的解决方法是 return 来自函数的字符串并执行 (⍎) 该字符串:

      ∇Z←FOO
[1] ⍝ return a string that can be ⍎'ed····
[2] Z←'{⍵+2}'
[3] ∇

      ⍎FOO,⍕42
44