2012-06-10 2 views
6

APLでの普及関数の定義方法を教えてください。私は何APLでの普及関数の定義

は、私は、私はそれを見ていないよ、この操作を行うには良い方法があるはずだと思う

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

です。

答えて

3

APLのほとんどのプリミティブ関数はすでに普及しています。だから、あなたが面白そうなことをしない限り、カスタム関数はすでに普及しているでしょう。たとえば、

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

は、スカラーだけでなく配列に対しても機能します。

あなたが派手なものを行う行うと、あなたは非普及機能fを持っている場合は、あなたのように読み取ることができ

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

によって 普及1にそれを回すことができます。引数がスカラーである場合には、 fを適用します。そうでない場合は、引数の各項目に再帰的に入ります。

0

dfns workspaceは、1つまたは2つのいずれかの引数を指定して、pervasively適用するために、そのオペランドの機能を引き起こすperv operatorが含ま:

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

Try it online!