Langue Q - Verbes et adverbes

Kdb + a des noms, des verbes et des adverbes. Tous les objets de données et fonctions sontnouns. Verbs améliorez la lisibilité en réduisant le nombre de crochets et de parenthèses dans les expressions. Adverbsmodifier les fonctions et les verbes dyadiques (2 arguments) pour produire de nouveaux verbes apparentés. Les fonctions produites par les adverbes sont appeléesderived functions ou derived verbs.

Chaque

L'adverbe each, noté (`), modifie les fonctions dyadiques et les verbes pour s'appliquer aux éléments des listes au lieu des listes elles-mêmes. Jetez un œil à l'exemple suivant -

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

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

Il existe une forme de Eachpour les fonctions monadiques qui utilisent le mot-clé «chacun». Par exemple,

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

Chaque gauche et chaque droite

Il existe deux variantes de Each pour les fonctions dyadiques appelées Each-Left (\:) et Each-Right(/ :). L'exemple suivant explique comment les utiliser.

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