如何在APL中定义普适函数?
我的工作是
function←{
(⊃⍣(⍬≡⍴⍵)){the function that apply to scalar}¨⍵
}
我认为应该有更好的方法来做到这一点,我没有看到它。
答案 0 :(得分:3)
APL中的大多数原始函数已经普遍存在。所以,除非你做了花哨的东西,你的自定义功能已经很普遍了。例如
f←{÷1+*-⍵} ⍝ sigmoid, f(x)=1/(1+exp(-x))
将适用于数组和标量。
如果你确实做过花哨的东西并且你有一个非普遍的功能f
,你可以把它变成一个
g←{0=⍴⍴⍵:f⍵ ⋄ ∇¨⍵} ⍝ the pervasive version of f
可以读作:如果参数是标量,则对其应用f
,否则递归进入参数的每个项目。
答案 1 :(得分:0)
dfns
workspace包含perv
operator,导致其操作数函数普遍应用,带有一个或两个参数:
perv←{⍺←⊢ ⍝ Scalar pervasion
1=≡⍺ ⍵ ⍵:⍺ ⍺⍺ ⍵ ⍝ (⍺ and) ⍵ depth 0: operand fn application
⍺ ∇¨⍵ ⍝ (⍺ or) ⍵ deeper: recursive traversal.
}