Namespaces¶
Namespaces are containers within the kdb+ workspace. Names defined in a namespace are unique only within the namespace.
Namespaces are a convenient way to divide an application between modules; also to construct and share library code.
Namespaces are identified by a leading dot in their names.
System namespaces¶
kdb+ includes the following namespaces.
| namespace | contents |
|---|---|
.h |
Functions for converting files into various formats and for web-console display |
.j |
Functions for converting between JSON and q dictionaries |
.m |
Objects in memory domain 1 |
.Q |
Utility functions |
.q |
Definitions of q keywords |
.z |
System variables and functions, and hooks for callbacks |
The linked pages document some of the objects in these namespaces. (Undocumented objects are part of the namespace infrastructure and should not be used in kdb+ applications.)
These and all single-character namespaces are reserved for use by KX.
Names¶
Apart from the leading dot, namespace names follow the same rules as names for q objects.
Outside its containing namespace, an object is known by the full name of its containing namespace followed by a dot and its own name.
Namespaces can contain other namespaces.
Thus .fee.fi.fo is the name of object fo within namespace fi within namespace fee.
Dictionaries¶
Namespaces are implemented as dictionaries.
To list the objects contained in namespace .foo:
key `.foo
To list all the namespaces in the root:
key `
Construction¶
Referring to a namespace is sufficient to create it.
q)key `
`q`Q`h`j`o
q).fee.fi.fo:42
q)key `
`q`Q`h`j`o`fee
q)key `.fee
``fi
q)key `.fee.fi
``fo
\d
Q for Mortals
ยง12 Workspace Organization