insert stmt projection syntax

why is the sq brackets and dictionary in 2nd arg wrong ? insert [t][(nameiq!Slatibartfast 156)] this is from q for mortals book where they are introducing insert stmts

This is due to the syntax of your mixed list of your dictionary.

Syntax of list always consist of brackets and semi-colons as separators:

(;;;;;)

This applies to simple list as well as any other type of list:

q)(1;2)
1 2

q)1 2 / exception for simple list where you just separate each atom with space

1 2

q)(a;b;`c)

ab`c / for non-numeric list, no space as separator

q)(“a”;“b”;“c”)

“abc”

q)(`Slatibartfast;156) / this is your mixed list

`Slatibartfast

156

So if you fix your mixed list syntax, this should work:

q)insert [t][(nameiq!<font color='"#ff0000"'>(Slatibartfast;156))]

,0