## How can I set a trigger on a kdb table?

Triggers went away in k4; kdb does not provide a table trigger mechanism. However, your needs may be satisfied with views and/or the function .z.vs

## What are the implicit, default argument names to a function?

x, y and z. This applies both to named and anonymous functions:

q)f: {x + y + z}
q)f[1; 2; 3] 6
q){x + y + z}[1; 2; 3] 6
q)

If z appears in the definition of an argument-less function, then the function takes 3 arguments. It is not necessary for x or y to appear:

q)f: {z}
q)f[3]
{z}[3]
q)f[3; 4; 5]
5
q)

Similarly, if y appears but z does not appear, then the function takes 2 arguments. What may surprise you is that, if none of x, y, or z appear, then the function takes a single argument called x:

q)f: {42}
q)f[] 42
q)value f
0xa00001
,`x
`symbol\$()
,`
42
“{42}”
q)

This is only of practical import if you want to test a function for how many arguments it takes. If you really want to define a function taking no arguments, you might try to use an empty parameter list:

q)f: {[] 47}
q)f[] 42
q)value f
0xa00001
,`
`symbol\$()
,`
47
“{[] 47}”
q)

While we’ve succeeded only in defining a function with a single, unnamed parameter, all is not lost. If you follow a convention of always declaring nullary functions in this way, that’s enough to test at runtime how many arguments a function requires.

## How can I glue two tables side by side?

If the tables have the same number of rows, you can use the function ^ (fill):

q)t: ([] x: `a`b; y: 1 2)
q)u: ([] z: “YN”)
q)t ^ u / works only when count[t] = count[u] x y z
—–
a 1 Y
b 2 N
q)