函数中可以 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
考虑以下函数,它应该 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