*** Welcome to piglix ***

Q (programming language from Kx Systems)

Q
Paradigm array, functional
Designed by Arthur Whitney
Developer Kx Systems
First appeared 2003
Stable release
3.4 / June 7, 2016 (2016-06-07)
Typing discipline dynamic, strong
Influenced by
A+, APL, Scheme, K

Q is a proprietary array processing language developed by Arthur Whitney and commercialized by Kx Systems. The language serves as the query language for kdb+, a disk based and in-memory, column-based database. kdb+ is based upon K, a terse variant of APL. Q is a thin wrapper around K, providing a more readable, English-like interface.

The fundamental building blocks of Q are atoms, lists and functions. Atoms are scalars and include numeric, character, date and time data types. Lists are ordered collections of atoms (or other lists) upon which the higher level data structures dictionaries and tables are internally constructed. A dictionary is a map of a list of keys to a list of values. A table is a transposed dictionary of symbol keys and equal length lists (columns) as values. A keyed table, analogous to a table with a primary key placed on it, is a dictionary where the keys and values are arranged as two tables.

The following code demonstrates the relationships of the data structures (expressions to be evaluated appear prefixed with the "q)" prompt, with the output of the evaluation shown beneath):

These entities are manipulated via functions, which include the built-in functions that come with Q (which are actually defined as K macros) and user-defined functions. Functions are themselves a data type, and can be placed into lists, dictionaries and tables, or passed into other functions as parameters.

Like K, Q is interpreted and the result of the evaluation of an expression is immediately displayed, unless terminated with a semi-colon. The Hello world program is therefore trivial:

The following expression sorts a list of strings stored in the variable x descending by their lengths:


...
Wikipedia

...