Om is:
- A concatenative, homoiconic programming language with: An extremely minimal syntax, comprised of only three elements. Prefix, rather than postfix, notation. Instead of a data stack, functions manipulate the remainder of the program itself. A unique panmorphic type system in which there is only one data type—the program—exposed in the language, even though the implementation can optimize data representations for operations.
- An abstract algorithmic notation that does not rely on any computer implementation details (such as byte or machine word length).
- A data transfer format that is trivial to parse.
- Embeddable: implemented as a header-only C++ library (with only Boost and ICU dependencies) that can be incorporated into any C++ or Objective-C++ program.
- Extensible: new native operations can be implemented as C++ classes.
- Unicode-correct: any UTF-8 text (without byte-order marker) defines a valid Om program.