Om
Modules
Operation

A function that processes 0 or more Operands as data for computation. More...

Modules

 ->[expression]
 Pushes the contents of an Operand onto the front of an Expression (quoted).
 
 ->[lexicon]
 Pushes the contents of an Operand onto the front of a Lexicon (quoted).
 
 ->[literal]
 Pushes the contents of an Operand onto the front of a Literal (quoted).
 
 ->[operator]
 Pushes the contents of an Operand onto the front of an Operator (quoted).
 
 <-[...]
 Pops the first element, quoted.
 
 <-[characters]
 Pops the first character, quoted.
 
 <-[code` points]
 Pops the first code point, quoted.
 
 <-[forms]
 Pops the first form (a non-empty list of zero or one Operator(s), followed by zero or more Operands), quoted.
 
 <-[operand...]
 Pops the first Operand (if any), quoted.
 
 <-[operator...]
 Pops the first Operator (if any), quoted.
 
 <-[pairs]
 Pops the first pair (a non-empty list of zero or one Operator(s), followed by zero or one Operand(s)), quoted.
 
 <-[separator...]
 Pops the first Separator (if any), quoted.
 
 <-[terms]
 Pops the first term (Operator or Operand), quoted.
 
 =
 Compares two Operands for equality.
 
 [...]->
 Pops the last element, quoted.
 
 [...operand]->
 Pops the last Operand (if any), quoted.
 
 [...operator]->
 Pops the last Operator (if any), quoted.
 
 [...separator]->
 Pops the last Separator (if any), quoted.
 
 [characters]->
 Pops the last character, quoted.
 
 [code` points]->
 Pops the last code point, quoted.
 
 [expression]<-
 Pushes the contents of an Operand onto the back of an Expression (quoted).
 
 [forms]->
 Pops the last form (a non-empty list of zero or one Operator(s), followed by zero or more Operands), quoted.
 
 [lexicon]<-
 Pushes the contents of an Operand onto the back of a Lexicon (quoted).
 
 [literal]<-
 Pushes the contents of an Operand onto the back of a Literal (quoted).
 
 [operator]<-
 Pushes the contents of an Operand onto the back of an Operator (quoted).
 
 [pairs]->
 Pops the last pair (a non-empty list of zero or one Operator(s), followed by zero or one Operand(s)), quoted.
 
 [terms]->
 Pops the last term (Operator or Operand), quoted.
 
 choose
 If the third Operand is empty, it is replaced with the first Operand; otherwise, it is replaced with the second.
 
 copy
 Copies an Operand.
 
 decode
 Decodes encoded characters (non-recursively).
 
 define
 Evaluates and dequotes an Expression with an environment that contains additionally-defined Operators.
 
 dequote
 Strips the outer braces from an Operand.
 
 do
 Converts an Operand to a quoted Operator, then dequotes.
 
 drop
 Deletes an Operand.
 
 encode
 Encodes all special characters (non-recursively).
 
 environment
 Produces the Lexicon for the current environment.
 
 evaluate
 Evaluates an Expression in place, within the current environment.
 
 expression
 Normalizes the Operand as a quoted Expression.
 
 fill
 "Fills" an Expression such that none of its Operators is not followed by an Operand.
 
 find
 Finds the Operator, and its Operand mapping (if any), in a Lexicon.
 
 inject
 Inserts a Program before each Operand of another.
 
 lexicon
 Normalizes the Operand as a quoted Lexicon.
 
 normalize
 Performs a Unicode compatibility normalization (NFKD) on the contents of the Operand.
 
 operand
 Normalizes the Operand as a quoted Operand.
 
 operator
 Normalizes the Operand as a quoted Operator.
 
 pair
 Normalizes the first Operand as containing an Expression, then appends the second Operand to the Expression.
 
 quote
 Encloses an Operand in braces.
 
 rearrange
 Rearranges Operands.
 
 separator
 Normalizes the Operand as a quoted Separator.
 
 skip
 Skips over an Operand and dequotes.
 
 substitute
 Applies a Lexicon to an Expression resulting in recursive Operator replacement, without using definitions from the enclosing scope.
 
 swap
 Swaps two Operands.
 
 system
 Produces the system Lexicon.
 

Detailed Description

Implementation
Each Operation is a concrete type in the Om::Language::Operation namespace.