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.