2012-06-10 33 views
6

Làm cách nào để xác định chức năng phổ biến trong APL?Xác định chức năng phổ biến trong APL

Những gì tôi làm là

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

Tôi nghĩ cần phải có một cách tốt hơn để làm điều này mà tôi không nhìn thấy nó.

Trả lời

3

Hầu hết các chức năng nguyên thủy trong APL đã phổ biến. Vì vậy, trừ khi bạn làm những thứ ưa thích, các chức năng tùy chỉnh của bạn sẽ phổ biến. Ví dụ:

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

sẽ hoạt động trên mảng cũng như vô hướng.

Nếu bạn làm làm công cụ ưa thích và bạn có một chức năng không phổ biến f, bạn có thể biến nó thành một phổ biến bởi

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

có thể được đọc như sau: nếu đối số là một đại lượng vô hướng, áp dụng f trên đó, nếu không đệ quy đi vào từng mục của đối số.

0

Các dfns workspace chứa perv operator gây chức năng toán hạng của nó được áp dụng pervasively, với một hoặc hai đối số:

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

Try it online!

Các vấn đề liên quan