Skip to content
Remarks on Style

Defaults

Use null to mean default value

In multidimensional indexing, q uses null (::) to mean “all”.

m[;2 3]            / columns 2 and 3 and all of the rows

Follow suit; for example

copy:{[table;fields]
  …
  if[fields~::;fields:til table];
  …
  }

Interpret () as none

copy:{[table;fields]
  if[fields~();:()];
  if[fields~::;fields:til table];
  …
  }

If the arguments to a function are not independent, order them left-to-right in dependency order. That is, argument i restricts the choice made by argument i-1. In particular, try to arrange things so that if argument i is null, all arguments to the right of i are logically null. In the example above, it would be a mistake to order the arguments

copy:{[fields;table]
  …
  }

Let null mean ‘none’ if ‘none’ is the default

foo:{
  if[x~::;x:()]
  …
  }