2015年5月1日金曜日

[kdb] Adverbs / each

Adverbsに関するメモ(主にeach)
※間違いがありそう。あればコメントください。

kxwiki - Adverbs

・adverb
function or verb を引数にとって、別の function or verb を作り出す。
each以外はスペースを空けてはならない。

adverbの引数はadverbの前にあるfunction or verbなので、adverbの後ろはfunction or verbの引数。
つまり、f each args の場合、eachの引数はfで、argsはfの引数になる。

個人的によく使いそうなもの
[eachなど]
each  each        - 
  '   each both   - 
 \:   each left   - 
 /:   each right  - 

[関数fに作用]
 f each X  - fは1つ以上の引数をとる関数。
             fからXのそれぞれに作用する関数を作り出す。
             イメージ f[X[0]], f[X[1]],...
 X f' Y    - fは2つ以上の引数をとる関数。
             fからXとYの両方にそれぞれ作用する関数を作り出す。
             イメージ f[X[0];Y[0]], f[X[1];Y[1]],...
 X f\: Y   - fは2つ以上の引数をとる関数。
             fからXのぞれぞれをYに作用させる関数を作り出す。
             イメージ f[X[0];Y], f[X[1];Y],...
 X f/: Y   - fは2つ以上の引数をとる関数。
             fからYのぞれぞれをXに作用させる関数を作り出す。
             イメージ f[X;Y[0]], f[X;Y[0]],...

[実行例]
q)f:{sum x,y}
q)X: 1 2 3
q)Y: 10 20 30

q)f each X
{sum x,y}'[1 2 3]
q)
q)(f each X) Y
11 22 33

q)X f' Y
11 22 33
q)X f\: Y
61 62 63
q)X f/: Y
16 26 36

q)X f/:\: Y   / "X (f/:)\: Y "と同じ, (f/:)を関数と見ればよい
11 21 31
12 22 32
13 23 33


[書き方]
f'[X;Y], f\:[X;Y], f/:[X;Y] とも書ける
q)parse "X f' Y"   / parseすれば同じに見える
(';`f)
`X
`Y
q)parse "f'[X;Y]"  / parseすれば同じに見える
(';`f)
`X
`Y

・eachを使った関数の応用
TBW, maybe...



0 件のコメント:

コメントを投稿