Overloaded operators

Many non-alphabetic keyboard characters are overloaded. Operator overloads are resolved by rank, and sometimes by the type of argument/s.

@ at

rank syntax semantics
2 l@i, @[l;i] Index At
2 f@y, @[f;y] Apply At
3 @[f;y;e] Trap At
3 @[d;i;u] Amend At
4 @[d;i;m;my] Amend At
4 @[d;i;:;y] Replace At

\ backslash

rank syntax semantics
n/a \ ends multiline comment
n/a \ abort
1 (u\), u\[d] Converge
2 n u\d, u\[n;d] Do
2 t u\d, u\[t;d] While
2 x v\y, v\[x;y;z;…] map-reduce
d: data                   n: non-negative integer atom
u: unary value            t: test value
v: value rank>1           x: atom or vector
                          y, z…: conformable atoms or lists

! bang

rank syntax semantics
2 x!y Dict: make a dictionary
2 i!ts Enkey: make a simple table keyed
2 0!tk Unkey: make a keyed table simple
2 noasv!iv Enumeration from index
2 sv!h Flip Splayed or Partitioned
2 0N!y display y and return it
2 -i!y internal function
4 ![t;c;b;a] Update, Delete
a: select specifications
b: group-by specifications
c: where-specifications
h: handle to a splayed or partitioned table
i: integer >0
noasv: symbol atom, the name of a symbol vector
sv: symbol vector
t: table
tk: keyed table
ts: simple table
x,y: same-length lists

- dash

Syntax: immediately left of a number, indicates its negative.

q)neg[3]~-3
1b

Otherwise

rank example semantics
2 2-3 Subtract

. dot

rank syntax semantics
2 l . i, .[l;i] Index
2 g . gx, .[g;gx] Apply
3 .[g;gx;e] Trap
3 .[d;i;u] Amend
4 .[d;i;m;my] Amend
4 .[d;i;:;y] Replace

$ dollar

rank example semantics
3 $[x>10;y;z] Cond: conditional evaluation
2 "h"$y, `short$y, 11h$y Cast: cast datatype
2 "H"$y, -11h$y Tok: interpret string as data
2 x$y Enumerate: enumerate y from x
2 10$"abc" Pad: pad string
2 (1 2 3f;4 5 6f)$(7 8f;9 10f;11 12f) dot product, matrix multiply, mmu

# hash

rank example semantics
2 2 3#til 6 Take
2 s#1 2 3 Set Attribute

? query

rank example semantics
2 "abcdef"?"cab" Find y in x
2 10?1000, 5?01b Roll
2 -10?1000, -1?`yes`no Deal
2 0N?1000, 0N?`yes`no Permute
2 x?v extend an enumeration: Enum Extend
3 ?[11011b;"black";"flock"] Vector Conditional
3 ?[t;i;p] Simple Exec
4 ?[t;b;c;a] Select, Exec
5 ?[t;b;c;a;n] Select
6 ?[t;b;c;a;n;(g;cn)] Select

' quote

rank syntax semantics
1 (u')x, u'[x], x b'y, v'[x;y;…] Each: iterate u, b or v itemwise
1 'msg Signal an error
1 int'[x;y;…] Case: successive items from lists
2 '[u;v] Compose u with v
u:  unary value         int:  int vector
b:  binary value        msg:  symbol or string
v: value of rank ≥1     x, y: data

': quote-colon

rank example semantics
1 u': Each Parallel with unary u
1 b': Each Prior with binary b

/ slash

rank syntax semantics
n/a /a comment comment: ignore rest of line
1 (u/)y, u/[y] Converge
1 n u/ y, u/[n;y] Do
1 t u/ y, u/[t;y] While
1 (v/)y, v/[y] map-reduce: reduce a list or lists
u: unary value              t: test value
v: value rank ≥1            y: list
n: non-negative int atom

Syntax: a space followed by / begins a trailing comment. Everything to the right of / is ignored.

q)2+2 / we know this one
4

A / at the beginning of a line marks a comment line. The entire line is ignored.

q)/nothing in this line is evaluated

In a script, a line with a solitary / marks the beginning of a multiline comment. A multiline comment is terminated by a \ or the end of the script.

/
A script to add two numbers.
Version 2018.1.19
\
2+2
/
That's all folks.

_ underscore

rank example semantics
2 3_ til 10 Cut, Drop

Names can contain underscores

Best practice is to use a space to separate names and the Cut and Drop operators.

Unary forms

Many of the operators tabulated above have unary forms in k.

Exposed infrastructure