Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如何在 APL 中定义一个普遍的功能?
我所做的是
function←{ (⊃⍣(⍬≡⍴⍵)){the function that apply to scalar}¨⍵ }
我认为应该有更好的方法来做到这一点,我没有看到它。
APL 中的大多数原始函数已经无处不在。所以,除非你做一些花哨的事情,否则你的自定义函数已经很普遍了。例如
f←{÷1+*-⍵} ⍝ sigmoid, f(x)=1/(1+exp(-x))
将适用于数组和标量。
如果你确实做了一些花哨的事情并且你有一个非普及的功能f,你可以通过以下方式将它变成一个普及的功能
f
g←{0=⍴⍴⍵:f⍵ ⋄ ∇¨⍵} ⍝ the pervasive version of f
可以理解为:如果参数是标量,则应用f它,否则递归地进入参数的每个项目。
dfns工作区包含一个运算符,该perv运算符导致其操作数函数被普遍应用,带有一个或两个参数:
dfns
perv
perv←{⍺←⊢ ⍝ Scalar pervasion 1=≡⍺ ⍵ ⍵:⍺ ⍺⍺ ⍵ ⍝ (⍺ and) ⍵ depth 0: operand fn application ⍺ ∇¨⍵ ⍝ (⍺ or) ⍵ deeper: recursive traversal. }
在线尝试!