Bahasa Q - Kata Kerja & Kata Keterangan

Kdb + memiliki kata benda, kata kerja, dan kata keterangan. Semua objek dan fungsi data adalahnouns. Verbs meningkatkan keterbacaan dengan mengurangi jumlah tanda kurung siku dan tanda kurung dalam ekspresi. Adverbsmemodifikasi fungsi dan kata kerja diadik (2 argumen) untuk menghasilkan kata kerja baru yang terkait. Fungsi yang dihasilkan oleh kata keterangan disebutderived functions atau derived verbs.

Setiap

Kata keterangan each, dilambangkan dengan (`), memodifikasi fungsi dan kata kerja diad untuk diterapkan ke item daftar alih-alih daftar itu sendiri. Lihat contoh berikut -

q)1, (2 3 5)       / Join
1 2 3 5

q)1, '( 2 3 4)     / Join each
1 2
1 3
1 4

Ada bentuk Eachuntuk fungsi monadik yang menggunakan kata kunci "masing-masing". Sebagai contoh,

q)reverse ( 1 2 3; "abc")           /Reverse
a b c
1 2 3

q)each [reverse] (1 2 3; "abc")     /Reverse-Each
3 2 1
c b a

q)'[reverse] ( 1 2 3; "abc")
3 2 1
c b a

Each-Left dan Each-Right

Ada dua varian Each untuk fungsi dyadic yang dipanggil Each-Left (\ :) dan Each-Right(/ :). Contoh berikut menjelaskan cara menggunakannya.

q)x: 9 18 27 36

q)y:10 20 30 40

q)x,y            / join
9 18 27 36 10 20 30 40

q)x,'y           / each

9   10
18  20
27  30
36  40

q)x: 9 18 27 36

q)y:10 20 30 40

q)x,y            / join
9 18 27 36 10 20 30 40

q)x,'y           / each, will return a list of pairs

9   10
18  20
27  30
36  40

q)x, \:y         / each left, returns a list of each element
                 / from x with all of y
					  
9   10  20  30  40
18  10  20  30  40
27  10  20  30  40
36  10  20  30  40

q)x,/:y          / each right, returns a list of all the x with
                 / each element of y
					  
9  18  27  36  10
9  18  27  36  20
9  18  27  36  30
9  18  27  36  40

q)1 _x           / drop the first element
18 27 36

q)-2_y           / drop the last two element
10 20

q)               / Combine each left and each right to be a
                 / cross-product (cartesian product)
                 
q)x,/:\:y

9   10  9   20  9   30  9   40
18  10  18  20  18  30  18  40
27  10  27  20  27  30  27  40
36  10  36  20  36  30  36  40