Q Sprache - Verb & Adverbien

Kdb + hat Substantive, Verben und Adverbien. Alle Datenobjekte und Funktionen sindnouns. Verbs Verbessern Sie die Lesbarkeit, indem Sie die Anzahl der eckigen Klammern und Klammern in Ausdrücken verringern. AdverbsÄndern Sie dyadische (2 Argumente) Funktionen und Verben, um neue, verwandte Verben zu erzeugen. Die von Adverbien erzeugten Funktionen werden aufgerufenderived functions oder derived verbs.

Jeder

Das Adverb each, bezeichnet mit (`), modifiziert dyadische Funktionen und Verben, um sie auf die Listenelemente anstelle der Listen selbst anzuwenden. Schauen Sie sich das folgende Beispiel an -

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

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

Es gibt eine Form von Eachfür monadische Funktionen, die das Schlüsselwort "each" verwenden. Zum Beispiel,

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

Jeder links und jeder rechts

Es gibt zwei Varianten von Each für dyadische Funktionen Each-Left (\:) und Each-Right(/ :). Im folgenden Beispiel wird die Verwendung erläutert.

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