[type]
    name    = int
    comment = Integer algebra
    check   = flow: "[+-]?[0-9]+"
    [operators]
    +/-  = int->int, change sign
    +    = int->int->int, add
    -    = int->int->int, substract
    *    = int->int->int, multiply
    /    = int->int->int, divide
    %    = int->int->int, modulo
    =    = int->int->int, equality
    >    = int->int->int, greater
    <    = int->int->int, smaller
    >=   = int->int->int, greaterEq
    <=   = int->int->int, smallerEq
    <>   = int->int->int, diferent
    <<   = int->int->int, shift left
    >>   = int->int->int, shift right
    &    = int->int->int, binary and
    |    = int->int->int, binary or
    ^    = int->int->int, binary xor
    &&   = int->int->int, logical and
    ||   = int->int->int, logical or
    zero = int->int, is zero
 
FEATURES
  • the data type is specified with a regular expression (check item)
  • an operator is known by its name (+/-) and its signature (int->int)
  • the implementation of an operator is not described in an algebra
  • the list of operator can be infinitly extended
  • algebra are dynamically loaded in the compiler (command line)