【发布时间】:2012-06-10 07:41:29
【问题描述】:
如何在 APL 中定义一个普遍的函数?
我做的是
function←{
(⊃⍣(⍬≡⍴⍵)){the function that apply to scalar}¨⍵
}
我认为应该有更好的方法来做到这一点,我没有看到它。
【问题讨论】:
标签: apl
如何在 APL 中定义一个普遍的函数?
我做的是
function←{
(⊃⍣(⍬≡⍴⍵)){the function that apply to scalar}¨⍵
}
我认为应该有更好的方法来做到这一点,我没有看到它。
【问题讨论】:
标签: apl
APL 中的大多数原始函数已经无处不在。所以,除非你做一些花哨的事情,否则你的自定义函数已经很普遍了。比如
f←{÷1+*-⍵} ⍝ sigmoid, f(x)=1/(1+exp(-x))
适用于数组和标量。
如果你做一些花哨的事情并且你有一个非普及的函数f,你可以把它变成一个
无孔不入的一个
g←{0=⍴⍴⍵:f⍵ ⋄ ∇¨⍵} ⍝ the pervasive version of f
可以理解为:如果参数是标量,则在其上应用f,否则递归进入参数的每一项。
【讨论】:
dfns workspace 包含 perv operator,这使得它的操作数函数被普遍应用,带有一个或两个参数:
perv←{⍺←⊢ ⍝ Scalar pervasion
1=≡⍺ ⍵ ⍵:⍺ ⍺⍺ ⍵ ⍝ (⍺ and) ⍵ depth 0: operand fn application
⍺ ∇¨⍵ ⍝ (⍺ or) ⍵ deeper: recursive traversal.
}
【讨论】: