【问题标题】:Define a pervasive function in APL在 APL 中定义一个普遍的函数
【发布时间】:2012-06-10 07:41:29
【问题描述】:

如何在 APL 中定义一个普遍的函数?

我做的是

function←{
    (⊃⍣(⍬≡⍴⍵)){the function that apply to scalar}¨⍵
}

我认为应该有更好的方法来做到这一点,我没有看到它。

【问题讨论】:

    标签: apl


    【解决方案1】:

    APL 中的大多数原始函数已经无处不在。所以,除非你做一些花哨的事情,否则你的自定义函数已经很普遍了。比如

    f←{÷1+*-⍵}    ⍝ sigmoid, f(x)=1/(1+exp(-x))
    

    适用于数组和标量。

    如果你做一些花哨的事情并且你有一个非普及的函数f,你可以把它变成一个 无孔不入的一个

    g←{0=⍴⍴⍵:f⍵ ⋄ ∇¨⍵}   ⍝ the pervasive version of f
    

    可以理解为:如果参数是标量,则在其上应用f,否则递归进入参数的每一项。

    【讨论】:

      【解决方案2】:

      dfns workspace 包含 perv operator,这使得它的操作数函数被普遍应用,带有一个或两个参数:

      perv←{⍺←⊢               ⍝ Scalar pervasion
          1=≡⍺ ⍵ ⍵:⍺ ⍺⍺ ⍵     ⍝ (⍺ and) ⍵ depth 0: operand fn application
                   ⍺ ∇¨⍵      ⍝ (⍺ or) ⍵ deeper: recursive traversal.
      }
      

      Try it online!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-11
        相关资源
        最近更新 更多