Provided by: afnix_2.8.1-1_amd64 bug

NAME

       vol-2 - afnix reference manual

RESERVED KEYWORDS

       Reserved  keyword  are,  with  symbols  and  literals, the basic constituents of the writing system. With
       couple of exception, reserved keywords are in fact special forms. During the execution, a special

       assert
       The assertspecial form check for equality between two operands. Both objects must be of the same type. If
       the equality test fails, the special form print a message  and  abort  the  execution.  By  default,  the
       assertion  checking  is  turned off. The interpreter option -f assertenables the assertion checking. When
       the interpreter is compiled in debug mode, the assertion checking is turned on by default.

       Syntax

              assert "form 1" "form 2"

       Example

              assert true (== 1 1) assert 3    (+  2 1)

       block
       The blockspecial form defines a new nameset for sequential execution of regular form  or  implicit  form.
       When  the block form is evaluated, the block nameset is linked to its parent nameset. When all forms have
       been executed, the block nameset is destroyed and the result of the  last  evaluation  in  the  block  is
       considered to be the result of the block evaluation.

       Syntax

              block "regular form" block "block form"

       Example

              trans a 1 block {
                assert    a 1
                trans     a (+ 1 1)
                assert    a 2
                assert ..:a 1 } assert 1 a

       class
       The  classspecial form creates a new class object. Without argument, an instance of that class is created
       without data members.

       Syntax

              class

       Example

              const Color (class) trans Color:preset (red green blue) {
                const this:red   red
                const this:green green
                const this:blue  blue } const red   (Color 255   0   0) const green (Color   0  255    0)  const
              blue  (Color   0   0 255)

       const
       The  constspecial  form  binds  a symbol with an object and marks it as a constant symbol. When used with
       three or four argument, a gamma expression is automatically created. constcan also be used to bind  class
       or instance members.

       Syntax

              const  symbol  "object"  const symbol "argument" "body" const symbol "argument" "closed variables"
              "body"

       Example

              const number 123 const max (x y) (if (> x y) x y)

       delay
       The delayspecial form delays the evaluation of the form argument by creating a Promiseobject. The promise
       evaluate to itself until a call to force the evaluation has been made. When the promise has been  forced,
       the  evaluation  result  is stored. Further call to force will produce the same result. Without argument,
       the delayed evaluation is nil. With one argument, a  Promiseobject  is  created  directly.  With  several
       argument,  a  cons cell is created with the first argument left unevaluated and the other evaluated. This
       permit to delay a form while evaluatin the calling arguments.

       Syntax

              delay "form"

       Example

              trans  y 3 const  l ((lambda (x) (+ x y)) 1) assert 4 (force l) trans  y  0  assert  4  (force  l)
              trans  y 1 trans  d (delay (lambda (x) (+ x 1)) y) assert 2 (force d)

       do
       The dospecial form is used to build loop with forward condition. The loop construct accepts either 2 or 3
       arguments.  With  2  argument,  the  first  argument is the loop body and the second argument is the loop
       condition which must evaluates to a boolean object. With 3 arguments, the first argument is  the  initial
       condition that is executed only once.

       Syntax

              do "body" "condition" do "initial" "body" "condition"

       Example

              const number-of-digits (s) {
                const len (s:length)
                trans index 0
                trans count 0
                do {
                  trans c (s:get index)
                  if (c:digit-p) (count:++)
                } (< (index:++) len)
                eval count }

       enum
       The  enumspecial  form  creates an enumeration from a list of literal. The result object is an Enumobject
       that holds the enumerated items. An item evaluation results with an  Itemobject  that  is  bound  to  the
       enumeration object.

       Syntax

              enum "literal" ...

       Example

              const e (enum E1 E2 E3)

       errorln
       The errorlnspecial form prints on the interpreter error stream a set of arguments. Each arguments have to
       be  a  literal which are converted to a string. When all arguments have been printed a new line character
       is printed. The errorspecial form behaves like errorlnexcepts that a new line character is not printed at
       the end of the arguments.

       Syntax

              errorln errorln "nil" errorln "literal list"

       Example

              errorln errorln "hello millennium" ' ' 2000

       eval
       The evalspecial form simply evaluates the object argument. The form is useful when returning an  argument
       from a lambda or gamma expression using an implicit form.

       Syntax

              eval "object"

       Example

              const ret (x) (eval x) eval (protect (+ 1 2))

       for
       The  forspecial  form provides a facility to iterate on iterable objects. The Cons, Listand Vectorobjects
       are typical iterable objects. For each iterable objects, a symbol  is  set  after  each  iteration.  Each
       object  symbol  value  can  be  used for further computation. The iteration stops when one of the objects
       iterator is at the end position.

       Syntax

              for "symbol list" "iterable object list" "body"

       Example

              # compute the scalar product of two vectors const scalar-product (u v) {
                trans result 0
                for (x y) (u v) (result:+= (* x y))
                eval result }

       force
       The forcespecial form forces the evaluation of its argument. If  the  argument  evaluates  to  a  promise
       object,  the  promise  evaluation  is forced. If the argument is not a promise, forcekeyword behaves like
       eval. When a promise has been forced, further call to force will not change the evaluation result.

       Syntax

              force "object"

       Example

              trans  y 3 const  l ((lambda (x) (+ x y)) 1) assert 4 (force l) trans  y 0 assert 4 (force l)

       if
       The ifspecial form executes a form based on  the  evaluation  of  a  boolean  expression.  In  its  first
       representation,  ifexecutes  a  form  if  the  condition  is  evaluated to true. An alternate form can be
       specified and is executed if the boolean expression  evaluates  to  false.  It  is  an  error  to  use  a
       conditional form which does not evaluate to a boolean object.

       Syntax

              if "condition" "true form" if "condition" "true form" "else form"

       Example

              const max (x y) (if (> x y) x y)

       lambda
       The  lambdaspecial  form  creates  a  new  closure object with eventually a set of arguments and a set of
       closed variables. In its first form, the closure is declared with a set of arguments or nil  to  indicate
       no  argument.  In  its  second  form, the closure is declared with a set of arguments and a set of closed
       variables. The closed variables are evaluated at the construction of the closure and become part  of  the
       closure  object. When the closure is called, a new nameset is created and linked with the parent nameset.
       The set of calling arguments are bounded in that nameset with the formal  argument  list  to  become  the
       actual  arguments.  The  set of closed variables is linked at runtime to the closure nameset. A lambda or
       gamma expression can have its argument declared as constargument.

       Syntax

              lambda "nil" "body" lambda "argument list" "body" lambda "argument list" "closed  variables  list"
              "body"

       Example

              const  no-args  (lambda  nil  (+  1 1)) const add     (lambda ((const x) (const y)) (+ x y)) const
              closed  (lambda (x) (y) (+ x y))

       launch
       The launchspecial form creates a new thread by executing the  form  argument  in  a  normal  thread.  The
       created  thread  is  added  in the normal thread list by creating a clone of the interpreter and starting
       immediately the execution of the form with the cloned interpreter. The command returns the thread  object
       in  the  calling  thread.  When  the  thread  terminates,  the thread object holds the result of the last
       executed form. The main thread is suspended until all normal threads have completed their execution.

       Syntax

              launch "form" launch "thread" "form"

       Example

              launch (println "hello world")

       loop
       The loopspecial form executes a loop based on an initial condition, an exit condition and  a  step  form.
       The initial condition is only executed one time. The exit condition is tested at each loop iteration. The
       loopspecial  form  creates its own nameset since the initial condition generally binds symbol locally for
       the loop.

       Syntax

              loop "init form" "exit form" "step" "form"

       Example

              loop (trans i 0) (< i 10) (i:++) (println i)

       nameset
       The namesetspecial form creates a new nameset. With no argument, a new nameset is created and  no  parent
       is binded to this nameset. With one argument, the argument must evaluate to a nameset and that nameset is
       used  as the parent one. If a nameset has to be created with the global nameset as the parent, the symbol
       ...can be used to reference the top level nameset. The symbol .references the current nameset. The symbol
       ..references the parent nameset of the current nameset.

       Syntax

              nameset nameset "parent nameset"

       Example

              const  local-nameset-not-bound  (nameset)  const  local-nameset-bounded    (nameset  ...)    const
              ...:global-nameset      (nameset)

       println
       The  printlnspecial  form prints on the interpreter output stream a set of arguments. Each arguments have
       to be a literal which is converted to a string. When all arguments have been printed a new line character
       is printed. The printspecial form behaves like printlnexcepts that a new line character is not printed at
       the end of the arguments.

       Syntax

              println println "nil" println "literal list"

       Example

              println println "hello millennium" ' ' 2000

       protect
       The protectspecial form take a single argument and returns it without evaluation. Protect is  mainly  use
       to get a symbol or form object.

       Syntax

              protect "object"

       Example

              const cons (protect (+ 1 2))

       return
       The  returnspecial  form causes the current expression to stop its evaluation and returns the argument or
       nil. The returnkeyword is primarily used in lambda or gamma expressions. If used in a  top  level  block,
       the block execution is stopped and the control is transferred to the top level.

       Syntax

              return "object"

       Example

              return (+ 1 2)

       sync
       The  syncspecial  form is a form synchronizer. Within a multi-threaded environment, the engine guarantees
       that only one thread will execute the form. The other threads are  suspended  until  the  form  has  been
       completed.

       Syntax

              sync "form"

       Example

              const print-message (code mesg) (
                sync {
                  errorln "error  : " code
                  errorln "message: " mesg
                } )

       switch
       The  switchspecial  form  is  a  form  selector.  The  first argument is the object to switch. The second
       argument is a list of forms with an object matcher and an execution form. The  elsespecial  form  can  be
       used as default matcher.

       Syntax

              switch "selector" "list of conditions"

       Example

              const get-primary-color (color value) (
                switch color (
                  ("red"   (return (value:substr 0 2))
                    ("green" (return (value:substr 2 4))
                      ("blue"  (return (value:substr 4 6))
                      )
                    )

       throw
       The  throwspecial  form  throws  an  exception.  Without argument, an exception of type user-exception is
       thrown. With one argument, the exception id is set. With two arguments, the exception  id  and  exception
       reason are set. With three arguments, the exception id, exception reason and exception object are set. An
       exception object represented by the symbol whatcan also be thrown. This is the method used to re-throw an
       exception.

       Syntax

              throw throw what throw "id" throw "id" "reason" throw "id" "reason" "object"

       Example

              throw throw "type-error" throw "type-error" "invalid argument"

       trans
       The transspecial form creates or sets a symbol with an object. transsearches in the current nameset only.
       If a symbol is found, it is set with the object. If the symbol is not found, it is created in the current
       nameset.  The  transkeyword  can  also  be used with qualified names. With 3 or 4 arguments, transcreates
       automatically a lambda expression.

       Syntax

              trans symbol "object" trans symbol "argument" "body" trans symbol  "argument"  "closed  variables"
              "body"

       Example

              trans a 1 trans fact (n) (if (< n 1) 1 (* n (fact (- n 1))))

       try
       The  tryspecial form catch an exception in the current execution nameset. The first argument is a form to
       execute. The optional second argument is the exception handler to be called  in  case  of  exception.  If
       there is no exception handler, all exceptions are caught. The result of execution is either the result of
       the  form  execution,  or  the exception object in case of exception, or nil if the exception is a native
       one. If there is an exception handler, the handler is executed with a new nameset and the special  symbol
       whatis bound to the exception. If the exception is nil, the symbol whatis undefined.

       Syntax

              try "form" try "form" " exception handler"

       Example

              try (+ 1 2) try (throw) try (throw "hello") try (throw "hello" "world") try (throw "hello" "world"
              "folks")

       unref
       The unrefspecial form unreference a symbol.

       Syntax

              unref symbol

       Example

              const number 123 unref number

       while
       The  whilespecial form is used to build loop with backward condition. The loop construct accepts either 2
       or 3 arguments. With 2 argument, the first argument is the loop condition and the second argument is  the
       loop  body that must evaluate to a boolean. With 3 arguments, the first argument is the initial condition
       that is executed only once.

       Syntax

              while "condition" "body" while "initial" "condition" "body"

       Example

              const gcd (u v) {
                while (!= v 0) {
                  trans r (u:mod v)
                  u:= v
                  v:= r
                }
                eval u }

RESERVED OBJECTS

       This chapter is a reference of the reserved objects with their respective builtin methods.  The  reserved
       objects  are  those  objects  defined  in  the global interpreter nameset and bind as reserved names. All
       literal have a string representation. The to-stringmethod is always available for these reserved objects.
       A literal object has a default constructor. Generally, it can also be constructed by a same  type  object
       or by a string object.

       Literal
       The  Literalobject  is  a  base object for all literal object. The sole purpose of a literal object is to
       provide to methods named to-stringand to-literalthat  return  a  string  representation  of  the  literal
       object.

       Predicate

              literal-p

       Inheritance

              Serial

       Methods

              to-string -> String (none)
              The  to-stringmethod  returns  a  string  representation of the literal. The string is expected to
              represent at best the literal.

              to-literal -> String (none)
              The to-literalmethod returns a string representation of the literal. The string differs  from  the
              to-stringmethod  in the sense that the string is a literal representation. For example the literal
              representation of a string is the quoted string.

       Nameable
       The Nameableobject is a base object that support name definition. The sole purpose of a literal object is
       to provide to method named get-namethat returns the object name.

       Predicate

              nameable-p

       Inheritance

              Object

       Methods

              get-name -> String (none)
              The get-namemethod returns the associated object name. The object name defined here is a name that
              the class wishes to associate with the object. For example, the InputFileis a nameable  class  and
              the name is the file name.

       Collectable
       The  Collectableobject  is  a  base  object  designed  to  provide  the  methods  for collectable object.
       Collectable objects are special objects that can be controlled by a  special  memory  manager,  called  a
       memory  collector  or  garbage  collector.  Unlike a simple object associated with a reference count, the
       collectable object is also controled by special methods. In  particular,  the  'release'  method  can  be
       invoked  to  release  all internal links susceptible to create loops and thus preventing the object to be
       release by the standard reference count mechanism. Releasing a link do  not  necessarily  result  in  the
       object destruction.

       Predicate

              collectable-p

       Inheritance

              Object

       Methods

              release -> none (none)
              The  releasemethod releases all links associated with the object. This method is naturally used to
              break circular dependencies which prohibits the normal object destruction by the mean of reference
              counting.

       Item
       The Itemreserved object is an enumeration item. The item is bound  to  an  enumeration  object.  An  item
       object  is  created  during  the  evaluation  of  an  enumeration  object.  An enumeration item cannot be
       constructed directly.

       Predicate

              item-p

       Inheritance

              Literal

       Operators

              == -> Boolean (Boolean)
              The ==operator returns true if the calling object is equal to the boolean argument.

              != -> Boolean (Boolean)
              The ==operator returns true if the calling object is not equal to the boolean argument.

       Methods

              get-enum -> Enum (none)
              The get-enummethod returns the enumeration object bound to the item. The item must  be  a  dynamic
              item or an exception is thrown.

       Boolean
       The  Booleanreserved object implements the behavior of a native boolean type. Two builtin symbols, namely
       true and false are used to represent the value of a boolean instance. The Booleantype is  primarily  used
       for test expression.

       Predicate

              boolean-p

       Inheritance

              Literal

       Constructors

              Boolean (none)
              The Booleanconstructor create a boolean object those default value is false.

              Boolean (Boolean)
              The Booleanconstructor create a boolean object with the boolean object argument.

              Boolean (String)
              The  Booleanconstructor  create  a  boolean  object  with  the  string object argument. The string
              "true"denotes the true value while the string "false"denotes the false value.

       Operators

              == -> Boolean (Boolean)
              The ==operator returns true if the calling object is equal to the boolean argument.

              != -> Boolean (Boolean)
              The ==operator returns true if the calling object is not equal to the boolean argument.

       Number
       The Numberreserved objectis a base class for all number objects. The number base object is  used  by  the
       Integer, Realand Relatifobjects. The class provides essentially the methods needed to format a number.

       Predicate

              number-p

       Inheritance

              Literal

       Methods

              format -> String (none|Integer)
              The  formatmethod  format  the  calling  number instance with a certain number of digits after the
              decimal point. In the first  form  without  argument,  the  default  formating  representation  is
              performed  with  a  null  precision.  In the second format, a number is represented with a certain
              precision given by the calling argument.

              to-hexa -> String (none)
              The to-hexamethod returns a signed hexadecimal representation of a number. This method works  well
              with Integerand Relatifobjects.

              to-hexa-string -> String (none)
              The  to-hexa-stringmethod  returns  a hexadecimal representation of a number without a prefix. The
              number is always considered positive. This method works well with Integerand Relatifobjects.

       Integer
       The Integerreserved object implements the behavior of a native 64  bits  signed  integer  type.  Standard
       decimal  notation  is  used  to  construct  integer object from a literal. The integer object can also be
       constructed from a string. Standard operators are provided for this class. The Integerobject is a literal
       object derived from the Numberobject.

       Predicate

              integer-p

       Inheritance

              Number

       Constructors

              Integer (none)
              The Integerconstructor create an integer object those default value is 0.

              Integer (Real)
              The Integerconstructor create an integer object with the  real  object  argument  those  value  is
              truncated to an integer value.

              Integer (Integer)
              The Integerconstructor create an integer object with the integer object argument.

              Integer (Character)
              The  Integerconstructor create an integer object with the character object argument. The character
              encoding value is used as the integer value.

       Operators

              == -> Boolean (Integer|Real)
              The ==operator returns true if the calling object is equal to the integer or real argument.

              != -> Boolean (Integer|Real)
              The !=operator returns true if the calling object is not equal to the integer or real argument.

              + -> Integer (Integer|Real)
              The +operator returns the sum of the calling integer with an integer or a real object.

              - -> Integer (Integer|Real)
              The -operator returns the subtraction of the calling integer with an integer or a real object.

              * -> Integer (Integer|Real)
              The *operator returns the multiplication of the calling integer with an integer or a real object.

              / -> Integer (Integer|Real)
              The /operator returns the division of the calling integer with an integer or a real object.

              < -> Boolean (Integer|Real)
              The <operator returns true if the calling integer is less than the integer or real object.

              <= -> Boolean (Integer|Real)
              The <=operator returns true if the calling integer is less equal than the integer or real object.

              > -> Boolean (Integer|Real)
              The >operator returns true if the calling integer is greater than the integer or real object.

              >= -> Boolean (Integer|Real)
              The >=operator returns true if the calling integer is greater  equal  than  the  integer  or  real
              object.

              ++ -> Integer (Integer|Real)
              The ++operator increments the calling integer by 1.

              -- -> Integer (Integer|Real)
              The --operator decrements the calling integer by 1.

              += -> Integer (Integer|Real)
              The +=operator add and assign the calling integer with an integer or real argument object.

              -= -> Integer (Integer|Real)
              The -=operator subtracts and assign the calling integer with an integer or real argument object.

              *= -> Integer (Integer|Real)
              The *=operator multiply and assign the calling integer with an integer or real argument object.

              /= -> Integer (Integer|Real)
              The /=operator divide and assign the calling integer with an integer or real argument object.

       Methods

              or -> Integer (Integer)
              The ormethod returns the binary or between the integer and the integer argument.

              abs -> Integer (none)
              The absmethod returns the absolute value of the calling integer instance.

              not -> Integer (none)
              The notmethod returns the binary negation of the calling integer instance.

              shl -> Integer (Integer)
              The  shlmethod returns a new integer corresponding to the calling integer instance shifted left by
              the integer argument.

              shr -> Integer (Integer)
              The shrmethod returns a new integer corresponding to the calling integer instance shifted right by
              the integer argument.

              and -> Integer (Integer)
              The andmethod returns a new integer corresponding to the binary and between  the  calling  integer
              instance and the integer argument.

              xor -> Integer (Integer)
              The  xormethod  returns  a new integer corresponding to the binary xor between the calling integer
              instance and the integer argument.

              mod -> Integer (Integer)
              The modmethod returns the modulo between the integer instance and the integer  argument.  A  type-
              errorexception is raised if the argument is not an argument.

              odd-p -> Boolean (none)
              The odd-pmethod returns true if the integer instance is odd, false otherwise.

              even-p -> Boolean (none)
              The even-pmethod returns true if the integer instance is even, false otherwise.

              zero-p -> Boolean (none)
              The zero-pmethod returns true if the integer instance is null, false otherwise.

       Relatif
       The  Relatifreserved object implements the behavior of an unlimited signed integer type. Standard decimal
       notation followed by the 'r' or 'R' character is used to construct relatif object  from  a  literal.  The
       relatif  object  can  also  be  constructed from a string. This class is similar to the Integerclass. The
       Relatifis a literal object derived from the Numberobject.

       Predicate

              relatif-p

       Inheritance

              Number

       Constructors

              Relatif (none)
              The Relatifconstructor create a relatif object those default value is 0.

              Relatif (Real)
              The Relatifconstructor create an relatif object with the  real  object  argument  those  value  is
              truncated to an integer value.

              Relatif (Relatif)
              The Relatifconstructor create an relatif object with the relatif object argument.

              Relatif (Integer)
              The Relatifconstructor create an relatif object with the integer object argument.

              Relatif (Character)
              The  Relatifconstructor create an relatif object with the character object argument. The character
              encoding value is used as the relatif value.

       Operators

              == -> Boolean (Relatif|Integer)
              The ==operator returns true if the calling object is equal to the relatif or integer argument.

              != -> Boolean (Relatif|Integer)
              The ==operator returns true if the calling object is not equal to the relatif or integer argument.

              + -> Relatif (Relatif|Integer)
              The +operator returns the sum of the calling relatif with an relatif or a integer object.

              - -> Relatif (Relatif|Integer)
              The -operator returns the subtraction of the calling relatif with an relatif or a integer object.

              * -> Relatif (Relatif|Integer)
              The *operator returns the multiplication of the calling relatif  with  an  relatif  or  a  integer
              object.

              / -> Relatif (Relatif|Integer)
              The /operator returns the division of the calling relatif with an relatif or a integer object.

              < -> Boolean (Relatif|Integer)
              The <operator returns true if the calling relatif is less than the relatif or integer object.

              <= -> Boolean (Relatif|Integer)
              The  <=operator  returns  true  if  the  calling relatif is less equal than the relatif or integer
              object.

              > -> Boolean (Relatif|Integer)
              The >operator returns true if the calling relatif is greater than the relatif or integer object.

              >= -> Boolean (Relatif|Integer)
              The >=operator returns true if the calling relatif is greater equal than the  relatif  or  integer
              object.

              ++ -> Relatif (Relatif|Integer)
              The ++operator increments the calling relatif by 1.

              -- -> Relatif (Relatif|Integer)
              The --operator decrements the calling relatif by 1.

              += -> Relatif (Relatif|Integer)
              The +=operator add and assign the calling relatif with an relatif or integer argument object.

              -= -> Relatif (Relatif|Integer)
              The  -=operator  subtracts  and  assign  the  calling  relatif with an relatif or integer argument
              object.

              *= -> Relatif (Relatif|Integer)
              The *=operator multiply and assign the calling relatif with an relatif or integer argument object.

              /= -> Relatif (Relatif|Integer)
              The /=operator divide and assign the calling relatif with an relatif or integer argument object.

       Methods

              or -> Relatif (Relatif)
              The ormethod returns the binary or between the relatif and the relatif argument.

              abs -> Relatif (none)
              The absmethod returns the absolute value of the calling relatif instance.

              not -> Relatif (none)
              The notmethod returns the binary negation of the calling relatif instance.

              shl -> Relatif (Integer)
              The shlmethod returns a new relatif corresponding to the calling relatif instance shifted left  by
              the integer argument.

              shr -> Relatif (Integer)
              The shrmethod returns a new relatif corresponding to the calling relatif instance shifted right by
              the integer argument.

              pow -> Relatif (Integer|Relatif|Integer Integer|Relatif Relatif)
              The  powmethod  returns  a  new relatif corresponding to the power of the calling relatif instance
              with the integer or relatif argument. With one argument, the power is computed directly. With  two
              arguments, a fast modular exponentiation is performed with the second argument as the modulus.

              mmi -> Relatif (Integer|Relatif)
              The  mmimethod  returns the multiplicative modular inverse of the calling relatif. The argument is
              the modulus to use for the inverse calculation.

              and -> Relatif (Relatif)
              The andmethod returns a new relatif corresponding to the binary and between  the  calling  relatif
              instance and the relatif argument.

              xor -> Relatif (Relatif)
              The  xormethod  returns  a new relatif corresponding to the binary xor between the calling relatif
              instance and the relatif argument.

              mod -> Relatif (Relatif|Integer)
              The modmethod returns the modulo between the relatif instance and the relatif or integer argument.
              A type-errorexception is raised if the argument is invalid.

              odd-p -> Boolean (none)
              The odd-pmethod returns true if the relatif instance is odd, false otherwise.

              even-p -> Boolean (none)
              The even-pmethod returns true if the relatif instance is even, false otherwise.

              zero-p -> Boolean (none)
              The zero-pmethod returns true if the relatif instance is null, false otherwise.

              get-msb -> Integer (none)
              The get-msbmethod returns the most significnd bit position for the calling relatif. If the  number
              is null, 0 is returned. The msb position is thus counted from 1.

       Real
       The  Realreserved object implements the behavior of a double floating point number type. Standard decimal
       dot notation or scientific notation is used to construct real object from a literal. The real object  can
       also  be constructed from an integer, a character or a string. The Realobject is a literal object derived
       from the Numberobject.

       Predicate

              real-p

       Inheritance

              Number

       Constructors

              Real (none)
              The Realconstructor create an real object those default value is 0.0.

              Real (Real)
              The Realconstructor create an real object with the real object argument.

              Real (Integer)
              The Realconstructor create an real object with the integer object argument.

              Real (Character)
              The Realconstructor create an real object  with  the  character  object  argument.  The  character
              encoding value is used as the integer value.

       Operators

              == -> Boolean (Integer|Real)
              The ==operator returns true if the calling object is equal to the integer or real argument.

              != -> Boolean (Integer|Real)
              The ==operator returns true if the calling object is not equal to the integer or real argument.

              + -> Real (Integer|Real)
              The +operator returns the sum of the calling real with an integer or a real object.

              - -> Real (Integer|Real)
              The -operator returns the subtraction of the calling real with an integer or a real object.

              * -> Real (Integer|Real)
              The *operator returns the multiplication of the calling real with an integer or a real object.

              / -> Real (Integer|Real)
              The /operator returns the division of the calling real with an integer or a real object.

              < -> Boolean (Integer|Real)
              The <operator returns true if the calling real is less than the integer or real object.

              <= -> Boolean (Integer|Real)
              The <=operator returns true if the calling real is less equal than the integer or real object.

              > -> Boolean (Integer|Real)
              The >operator returns true if the calling real is greater than the integer or real object.

              >= -> Boolean (Integer|Real)
              The >=operator returns true if the calling real is greater equal than the integer or real object.

              ++ -> Real (Integer|Real)
              The ++operator increments the calling real by 1.

              -- -> Real (Integer|Real)
              The --operator decrements the calling real by 1.

              += -> Real (Integer|Real)
              The +=operator add and assign the calling real with an integer or real argument object.

              -= -> Real (Integer|Real)
              The -=operator subtracts and assign the calling real with an integer or real argument object.

              *= -> Real (Integer|Real)
              The *=operator multiply and assign the calling real with an integer or real argument object.

              /= -> Real (Integer|Real)
              The +=operator divide and assign the calling real with an integer or real argument object.

       Methods

              nan-p -> Boolean (none)
              The nan-pmethod returns true if the calling real number instance is not-a-number (nan).

              ceiling -> Real (none)
              The ceilingmethod returns the ceiling of the calling real number instance.

              floor -> Real (none)
              The floormethod returns the floor of the calling real number instance.

              abs -> Real (none)
              The absmethod returns the absolute value of the calling real number instance.

              pow -> Real (Real|Integer)
              The  powmethod  returns the power of the calling real with the argument. The exponent argument can
              be either an integer or a real number.

              sqrt -> Real (none)
              The sqrtmethod returns the square root of the calling real number instance.

              ln -> Real (none)
              The lnmethod returns the natural logarithm of the calling real number instance.

              exp -> Real (none)
              The expmethod returns the exponential of the calling real number instance.

              sin -> Real (none)
              The sinmethod returns the sine of the calling floating point instance. The angle is  expressed  in
              radian.

              cos -> Real (none)
              The cosmethod returns the cosine of the calling floating point instance. The angle is expressed in
              radian.

              tan -> Real (none)
              The  tanmethod  returns the tangent of the calling floating point instance. The angle is expressed
              in radian.

              asin -> Real (none)
              The asinmethod returns the arc sine of the calling floating  point  instance.  The  result  is  in
              radian.

              acos -> Real (none)
              The  acosmethod  returns  the  arc cosine of the calling floating point instance. The result is in
              radian.

              atan -> Real (none)
              The atanmethod returns the arc tangent of the calling floating point instance. The  result  is  in
              radian.

              sinh -> Real (none)
              The sinhmethod returns the hyperbolic sine of the calling real number instance.

              cosh -> Real (none)
              The coshmethod returns the hyperbolic cosine of the calling real number instance.

              tanh -> Real (none)
              The atanmethod returns the hyperbolic tangent of the calling real number instance.

              asinh -> Real (none)
              The asinhmethod returns the hyperbolic arc sine of the calling real number instance.

              acosh -> Real (none)
              The acoshmethod returns the hyperbolic arc cosine of the calling real number instance.

              atanh -> Real (none)
              The atanhmethod returns the hyperbolic arc tangent of the calling real number instance.

              zero-p -> Boolean (none)
              The zero-pmethod returns true if the calling real instance is null, false otherwise.

       Character
       The  Characterreserved  object  implements  the behavior of an Unicode character type. A character can be
       constructed from a literal quoted notation, with  a  string  or  with  the  U+hexadecimal  notation.  The
       character  class is designed to handle the full range of the Unicode character space by using an internal
       32 bit quad representation with 31 bit  valid.  The  Characterclass  conform  also  with  the  ISO  10646
       character representation.

       Predicate

              character-p

       Inheritance

              Literal

       Constructors

              Character (none)
              The Characterconstructor create a character object those default value is the null character.

              Character (String)
              The Characterconstructor create a character object with the string object argument.

              Character (Integer)
              The Characterconstructor create a character object with the integer object argument.

              Character (Character)
              The Characterconstructor create a character object with the character object argument.

       Operators

              == -> Boolean (Character)
              The ==operator returns true if the calling object is equal to the character argument.

              != -> Boolean (Character)
              The !=operator returns true if the calling object is not equal to the character argument.

              < -> Boolean (Character)
              The <operator returns true if the calling character is less than the character object.

              <= -> Boolean (Character)
              The <=operator returns true if the calling character is less equal than the character object.

              > -> Boolean (Character)
              The >operator returns true if the calling character is greater than the character object.

              >= -> Boolean (Character)
              The >=operator returns true if the calling character is greater equal than the character object.

              ++ -> Character (Character)
              The ++operator increments the calling character by the next one in lexicographic order.

              -- -> Character (Character)
              The --operator decrements the calling character by the previous one in lexicographic order.

              += -> Character (Integer)
              The +=operator add the integer argument to the calling character.

              -= -> Character (Integer)
              The -=operator subtracts the integer argument to the calling character.

       Methods

              letter-p -> Boolean (none)
              The letter-ppredicate returns true if the character is a letter character, falseotherwise.

              digit-p -> Boolean (none)
              The digit-ppredicate returns true if the character is a digit character, false otherwise.

              alpha-p -> Boolean (none)
              The alpha-ppredicate returns true if the character is an alphanumeric character, falseotherwise.

              blank-p -> Boolean (none)
              The blank-ppredicate returns true if the character is a blank or tab character, false otherwise.

              eol-p -> Boolean (none)
              The eol-ppredicate returns true if the character is an end-of-linecharacter, false otherwise.

              eos-p -> Boolean (none)
              The eos-ppredicate returns true if the character is an end-of-streamcharacter, false otherwise.

              nil-p -> Boolean (none)
              The nil-ppredicate returns true if the character is the nil character, false otherwise.

              to-integer -> Integer (none)
              The to-integermethod returns an integer representation of the characters.

       Byte
       The  Bytereserved  object  implements  the behavior of an 8 bit character type. A byte can be constructed
       from a integer or from another byte. The Byteclass is similar to the Characterclass but is not a  literal
       object  because  it does not have a literal representation. Most of the time, a byte object is created by
       another object like a stream, when using the readmethod for example.

       Predicate

              byte-p

       Inheritance

              Serial

       Constructors

              Byte (none)
              The Byteconstructor create a byte object those default value is the null byte.

              Byte (Integer)
              The Byteconstructor create a byte object with the integer object argument. The integer value  must
              be in the range of 0x00 to 0xFF.

              Byte (Byte)
              The Byteconstructor create a byte object with the byte object argument.

       Operators

              == -> Boolean (Byte)
              The ==operator returns true if the calling object is equal to the byte argument.

              != -> Boolean (Byte)
              The !=operator returns true if the calling object is not equal to the byte argument.

              < -> Boolean (Byte)
              The <operator returns true if the calling byte is less than the byte object.

              <= -> Boolean (Byte)
              The <=operator returns true if the calling byte is less equal than the byte object.

              > -> Boolean (Byte)
              The >operator returns true if the calling byte is greater than the byte object.

              >= -> Boolean (Byte)
              The >=operator returns true if the calling byte is greater equal than the byte object.

              ++ -> Byte (Byte)
              The ++operator increments the calling byte by one.

              -- -> Byte (Byte)
              The --operator decrements the calling byte by one.

              += -> Byte (Integer)
              The +=operator adds the integer argument to the calling byte.

              -= -> Byte (Integer)
              The -=operator subtracts the integer argument to the calling byte.

       Methods

              eos-p -> Boolean (none)
              The eos-ppredicate returns true if the character is an end-of-streamcharacter, false otherwise.

              nil-p -> Boolean (none)
              The nil-ppredicate returns true if the byte is the nil byte, false otherwise.

              to-integer -> Integer (none)
              The to-integermethod returns an integer representation of the byte.

              to-char -> Character (none)
              The to-charmethod returns a character representing the byte.

       String
       The  Stringreserved  object  implements  the  behavior  of  an internal character array. The double quote
       notation is the literal notation for a string. A  string  can  also  be  constructed  from  the  standard
       objects.  Strings  can  be  compared, transformed or extracted with the help of the methods listed below.
       Internally, the string is represented as an array of Unicode characters.

       Predicate

              string-p

       Inheritance

              Literal

       Constructors

              String (none)
              The Stringconstructor create a string object those default value is the null string.

              String (Literal)
              The Stringconstructor create a string object with the literal object argument.

       Operators

              == -> Boolean (String)
              The ==operator returns true if the calling object is equal to the string argument.

              != -> Boolean (String)
              The !=operator returns true if the calling object is not equal to the string argument.

              < -> Boolean (String)
              The <operator returns true if the calling string is less than the string argument.

              <= -> Boolean (String)
              The <=operator returns true if the calling string is less equal than the string argument.

              > -> Boolean (String)
              The >operator returns true if the calling string is greater than the string argument.

              >= -> Boolean (String)
              The >=operator returns true if the calling string is greater equal than the string argument.

              + -> String (String)
              The +operator returns the sum of the calling string with an string object.

              += -> String (String)
              The +=operator add and assign the calling string with the string argument.

       Methods

              length -> Integer (none)
              The lengthmethod returns the length of the string.

              first -> Character (none)
              The firstmethod returns the first character in the string.

              last -> Character (none)
              The lastmethod returns the last character in the string.

              strip-left -> String (none|String)
              The strip-leftmethod removes the leading blanks and tabs and returns a new string. With  a  string
              argument, each character in the string is taken as a character separator that should be stripped.

              strip-right -> String (none|String)
              The  strip-rightmethod removes the trailing blanks and tabs and returns a new string.With a string
              argument, each character in the string is taken as a character separator that should be stripped.

              strip -> String (none|String)
              The stripmethod removes the leading, trailing blanks and tabs and returns a  new  string.  With  a
              string  argument,  each  character  in the string is taken as a character separator that should be
              stripped.

              split -> Vector (none|String)
              The splitmethod split the string into one or more  string  according  to  break  sequence.  If  no
              argument  is  passed  to  the  call,  the  break  sequence  is  assumed to be a blank, tab and eol
              characters.

              extract -> Vector (Character)
              The extractmethod extracts one or more string which are enclosed by a control character passed  as
              an argument. The method returns a vector of strings.

              to-upper -> String (none)
              The to-upperconverts all string characters to upper case and returns a new string.

              to-lower -> String (none)
              The to-lowermethod converts all string characters to lower case and returns a new string.

              get -> Character (Integer)
              The  getmethod  returns a the string character at the position given by the argument. If the index
              is invalid, an exception is raised.

              sub-left -> String (Integer)
              The sub-leftmethod returns the left sub string of the calling string up-to the argument index.  If
              the index is out of range, the string is returned.

              sub-right -> String (Integer)
              The  sub-rightmethod  returns  the right sub string of the calling string starting at the argument
              index. If the index is out of range, the string is returned.

              fill-left -> String (Character Integer)
              The fill-leftmethod returns a string filled on the left with the character  argument.  The  second
              argument  is the desired length of the resulting string. If the calling is too long, the string is
              returned.

              fill-right -> String (Character Integer)
              The fill-leftmethod returns a string filled on the right with the character argument.  The  second
              argument  is the desired length of the resulting string. If the calling is too long, the string is
              returned.

              substr -> String (Integer Integer)
              The substrmethod returns a string starting at the first argument index and ending  at  the  second
              argument index. If the indexes are out of range, an exception is raised.

              strcic -> Boolean (String)
              The strcicmethod compare the calling string with the argument string in a case insensitive way.

       Regex
       The Regexobject is a special object which is automatically instantiated by the interpreter when using the
       delimiter character [and ]. The regex syntax involves the use of standard characters, meta characters and
       control  characters.  Additionally,  a  string can be use to specify a series of characters. In its first
       form, the [and ]characters are used as syntax delimiters. The lexical analyzer  automatically  recognizes
       this  token as a regex and built the equivalent Regexobject. The second form is the explicit construction
       of the Regexobject. Note also that the [and ]characters are also used  as  regex  block  delimiters.  Any
       character,  except  the  one  used as operators can be used in a regex. The $character is used as a meta-
       character -- or control character -- to represent a particular set of  characters.  For  example,  [hello
       world]is a regex which match only the "hello world"string. The [$d+]regex matches one or more digits. The
       following control characters are builtin in the regex engine.
       Character   Description
       $a          matches any letter or digit
       $b          matches any blank characters
       $c          matches any combining characters
       $d          matches any digit
       $e          matches eol, cr and eos
       $l          matches any lower case letter
       $n          matches eol or cr
       $s          matches any letter
       $u          matches any upper case letter
       $v          matches any valid constituent
       $w          matches any word constituent
       $x          matches any hexadecimal characters

       The  uppercase  version is the complement of the corresponding lowercase character set. A character which
       follows a $character and that is not a meta character is treated as a normal character. For example  $[is
       the  [character.  A  quoted  string  can  be  used  to define character matching which could otherwise be
       interpreted as control characters or operator. A quoted string also interprets standard escaped sequences
       but not meta characters.
       Character   Description
       $A          any character except letter or digit
       $B          any character except blank characters
       $C          any character except combining characters
       $D          any character except digit
       $E          any character except eol, cr and eos
       $L          any character except lower case letter
       $N          any character except eol or cr
       $S          any character except letter
       $U          any character except upper case letter
       $V          any character except constituent
       $W          any character except word constituent
       $X          any character except hex characters

       A character set is defined with the <and >characters. Any enclosed character  defines  a  character  set.
       Note  that meta characters are also interpreted inside a character set. For example, <$d+->represents any
       digit or a plus or minus. If the first character is the ^character in the character  set,  the  character
       set is complemented with regards to its definition. The following unary operators can be used with single
       character, control characters and sub-expressions.
       Operator   Description
       *          match 0 or more times
       +          match 1 or more times
       ?          match 0 or 1 time
       |          alternation

       Alternation  is an operator which work with a secondary expression. Care should be taken when writing the
       right sub-expression. For example the following regex [$d|hello]is equivalent to [[$d|h]ello].  In  other
       word, the minimal first sub-expression is used when compiling the regex.

       Predicate

              regex-p

       Inheritance

              Literal

       Constructors

              Regex (none)
              The Regexconstructor create a regex object those default value is the null regex.

              Regex (String)
              The Regexconstructor create a regex object with the string object argument. The string argument is
              the regex specification.

       Operators

              == -> Boolean (String)
              The ==operator returns true if the argument is matched by the regex.

              != -> Boolean (String)
              The !=operator returns true if the argument is not matched by the regex.

              < -> Boolean (String)
              The <operator returns true if the argument is partially matched by the regex.

       Methods

              length -> Integer (none)
              The lengthmethod returns the length of the group vector when a regex match has been successful.

              get -> String (Integer)
              The getmethod returns by index the group sub-string when a regex match has been successful.

              match -> String (String)
              The matchmethod returns the first matching string of the argument string.

              replace -> String (String String)
              The  replacemethod  returns  a string constructed by replacing all matching sub-string -- from the
              first argument -- with the second argument string.

CONTAINER OBJECTS

       This chapter is a reference of the reserved container objects with their respective builtin methods. Some
       of these container objects are iterable objects. When an object  is  iterable,  an  iterator  constructor
       constructor is provided. The iterable-ppredicate returns true if the container is an iterable object. The
       get-iteratormethod can be used to construct an object iterator. For a given iterator, the predicates end-
       pand  valid-pcan  be  used  to  check  for  the end or a valid iterator position. The nextmethod move the
       iterator to its next position. The prevmethod move the  iterator  --  if  possible  --  to  its  previous
       position. The get-objectmethod returns the object at the current iterator position.

       Cons
       A Consinstance or simply a cons cellis a simple element used to build linked list. The cons cell holds an
       object  and  a pointer to the next cons cell. The cons cell object is called carand the next cons cell is
       called the cdr. Historically, carmeans Current Address Registerand cdrmeans Current Data  Register.  This
       notation is still present here for the sake of tradition.

       Predicate

              cons-p

       Inheritance

              SerialIterableCollectable

       Constructors

              Cons (none)
              The Consconstructor create a default cons cell with the carand cdrset to nil.

              Cons (Objects...)
              The Consconstructor create a list of cons cells with the object arguments. Each argument object is
              assigned to the carof the cons cell while the cdris used to link the cell together.

       Methods

              get-car -> Object (none)
              The get-carmethod returns the car of the calling cons cell.

              get-cdr -> Cons (none)
              The get-cdrmethod returns the cdr of the calling cons cell.

              get-cadr -> Object (none)
              The get-cadrmethod returns the car of the cdr of the calling cons cell or nil if the cdr is nil.

              get-caddr -> Object (none)
              The  get-caddrmethod  returns the car of the cdr of the cdr of the calling cons cell or nil if the
              cdr is nil.

              get-cadddr -> Object (none)
              The get-cadddrmethod returns the car of the cdr of the cdr of the cdr of the calling cons cell  or
              nil if the cdr is nil.

              length -> Integer (none)
              The lengthmethod returns the length of the cons cell. The minimum length returned is always 1.

              nil-p -> Boolean (none)
              The nil-ppredicate returns true if the car of the calling cons cell is nil, false otherwise.

              block-p -> Boolean (none)
              The block-ppredicate returns true if the cons cell is of type block, false otherwise.

              set-car -> Object (Object)
              The set-carset the car of the calling cons cell. The object argument is returned by the method.

              set-cdr -> Cons (Cons)
              The set-cdrset the cdr of the calling cons cell. The cons cell argument is returned by the method.

              add -> Object (Object)
              The  addmethod appends an object at the end of the cons cell chain by creating a new cons cell and
              linking it with the last cdr. The object argument is returned by this method.

              get -> Object (Integer)
              The getmethod returns the car of the cons cell chain  at  a  certain  position  specified  by  the
              integer index argument.

       Enum
       The Enumbuiltin object is an enumeration object. The enumeration is constructed with the reserved keyword
       enumand a list of literals or by string name with a constructor.

       Predicate

              enum-p

       Inheritance

              Object

       Constructors

              Enum (none)
              The Enumconstructor create an empty enumeration.

              Enum (String...)
              The Enumconstructor create an enumeration from a list of string arguments.

       Methods

              reset -> none (none)
              The resetmethod resets the enumeration and makes it empty.

              length -> Integer (none)
              The lengthmethod returns the number of items in the enumeration.

              exists-p -> Boolean (String)
              The  exists-ppredicate returns true if the name argument exists as an item. The name argument must
              be a lexical name or an exception is thrown.

              add -> none (String)
              The addmethod adds a new item to the enumeration by name. This method returns nil.

              get -> String (Integer)
              The getmethod returns an item string representation by index. The integer  argument  is  the  item
              index.

       List
       The  Listbuiltin object provides the facility of a double-link list. The Listobject is another example of
       iterable object. The Listobject provides support for forward and backward iteration.

       Predicate

              list-p

       Inheritance

              Iterable

       Constructors

              List (none)
              The Listconstructor create an empty list.

              List (Object...)
              The Listconstructor create a list from a list of object arguments.

       Methods

              length -> Integer (none)
              The lengthmethod returns the length of the list. The minimum length is 0 for an empty list.

              get-iterator -> Iterator (none)
              The get-iteratorreturns a forward/backward iterator for this list.

              add -> Object (Object)
              The addmethod appends an object at the end of the list. The object argument is  returned  by  this
              method.

              insert -> Object (Object)
              The  insertmethod  inserts an object at the beginning of the list. The object argument is returned
              by this method.

              get -> Object (Integer)
              The getmethod returns the object in the list at a certain position specified by the integer  index
              argument.

       Strvec
       The  Strvecbuiltin  object  provides  the  facility  of  an  index  array of strings. The Strvecobject is
       serializable object that stores strings. The strings can be added  with  an  optional  preference  for  a
       unique string value. The class is similar to the general purpose Vectorclass.

       Predicate

              strvec-p

       Inheritance

              Serial

       Constructors

              Strvec (none)
              The Strvecconstructor create an empty string vector.

              Strvec (Integer|Boolean)
              The  Strvecconstructor  create  a string vector with a predefined size or with a uniq flag. In the
              first form, the preferred vector size is given as an argument. In  the  second  form,  the  string
              unicity flag is given as an argument.

              Strvec (Integer Boolean)
              The  Strvecconstructor  create  a  string vector with a predefined size and a uniq flag. The first
              argument is the preferred vector size. The second argument is the string unicity flag.

       Methods

              reset -> none (none)
              The resetmethod resets the string vector. When the method is complete, the string vector is empty.

              length -> Integer (none)
              The lengthmethod returns the length of the string vector. The minimum length is  0  for  an  empty
              vector.

              min-length -> Integer (none)
              The min-lengthmethod returns the minimum string length of the string vector.

              max-length -> Integer (none)
              The max-lengthmethod returns the maximum string length of the string vector.

              empty-p -> Boolean (none)
              The empty-ppredicate returns true if the vector is empty.

              active-p -> Boolean (none)
              The  active-ppredicate  returns true if the vector is not empty. This predicate is the negation of
              the empty-ppredicate.

              get -> String (Integer)
              The getmethod returns the string in the vector at a certain  position  specified  by  the  integer
              index argument.

              set -> none (Integer String)
              The  setmethod  set  a  vector position with a string. The first argument is the vector index. The
              second argument is the string to set.

              first -> String (none)
              The firstmethod returns the first string in the vector.

              last -> String (none)
              The lastmethod returns the last string in the vector.

              pop -> Object (none)
              The popmethod removes the first element in the string vector and returns it.

              pop-last -> String (none)
              The pop-lastmethod removes the last element in the string vector and returns it.

              find -> Integer (String)
              The findmethod try to find a string in the vector. If the string is found,  the  vector  index  is
              returned else the -1 value is returned.

              lookup -> Integer (String)
              The  lookupmethod  try to find a string in the vector. If the string is found, the vector index is
              returned else an exception is raised.

              add -> none (String)
              The addmethod adds an object at the end of the vector. If the uniq  flag  is  active,  the  string
              argument is not added if it already exists.

              exists-p -> Boolean (String)
              The exists-pmethod returns true if the string argument exists in the vector.

              remove -> none (Integer|String)
              The removemethod removes a string from the vector by index or value. In the first form, the vector
              index is used as the place to remove. In the second form, the string argument is used as a key for
              removal. This method repacks the vector when the string has been removed.

              set-unique -> none (Boolean)
              The set-uniquemethod set the string vector unique flag. When the unique flag is set, there is only
              no string duplicate in the vector.

              get-unique -> Boolean
              The get-uniquemethod returns the string vector unique flag value.

              concat -> String (none | Character)
              The  concatmethod concatenates the string vector elements with a character separator. In the first
              form, with a separator character, the resulting string is the concatenation of the  string  vector
              elements.  In  the  second  form, the resulting string is the concatenation of the vector elements
              with a character separator. If the character separator is nilthen no separator is placed.

       Vector
       The Vectorbuiltin object provides the facility of an index array of objects. The Vectorobject is  another
       example of iterable object. The Vectorobject provides support for forward and backward iteration.

       Predicate

              vector-p

       Inheritance

              SerialIterableCollectable

       Constructors

              Vector (none)
              The Vectorconstructor create an empty vector.

              Vector (Object...)
              The Vectorconstructor create a vector from a list of object arguments.

       Methods

              reset -> none (none)
              The resetmethod reset the vector. When the method is complete, the vector is empty.

              length -> Integer (none)
              The lengthmethod returns the length of the vector. The minimum length is 0 for an empty vector.

              empty-p -> Boolean (none)
              The empty-ppredicate returns true if the vector is empty.

              get -> Object (Integer)
              The  getmethod  returns  the  object  in the vector at a certain position specified by the integer
              index argument.

              set -> Object (Integer Object)
              The setmethod set a vector position with an object. The first argument is the  vector  index.  The
              second argument is the object to set. The method returns the object to set.

              first -> Object (none)
              The firstmethod returns the first element in the vector.

              last -> Object (none)
              The lastmethod returns the last element in the vector.

              pop -> Object (none)
              The popmethod removes the first element in the vector and returns it.

              pop-last -> Object (none)
              The pop-lastmethod removes the last element in the vector and returns it.

              find -> Integer (Object)
              The  findmethod  try  to find an object in the vector. If the object is found, the vector index is
              returned as an Integer object, else nilp is returned.

              add -> Object (Object|Integer Object)
              The addmethod appends an object at the end of the vector or at a certain index. In the first form,
              the object argument is added at the end of the vector. In the second form, the object argument  is
              inserted  in  the vector at the specified index. In both cases, the object argument is returned by
              this method.

              exists-p -> Boolean (Object)
              The exists-pmethod returns true if the object argument exists in the vector. This method is useful
              to make sure that only one occurrence of an object is added to a vector.

              clean -> none (Integer)
              The cleanmethod removes an object from the vector by index and repack the vector.

              remove -> none (Object)
              The removemethod removes an object from the vector and repack the vector. If duplicate  exists  in
              the file, only one is removed.

       HashTable
       The  HashTablebuiltin  object  is  a container object which maps an object with a name. The hash table is
       dynamic and get resized automatically when needed. The lookup method throw an exception if  the  name  is
       not found. The get method returns nilp if the object is not found. The table can be configured to operate
       in a case insensitive way. If the case flag is changed, the table is automatically reset.

       Predicate

              hashtable-p

       Inheritance

              Object

       Constructors

              HashTable (none)
              The HashTableconstructor create an empty table.

              HashTable (Boolean)
              The HashTableconstructor create a table by case insensitive flag.

              HashTable (Integer)
              The HashTableconstructor create a table with a specific size.

              HashTable (Integer Boolean)
              The HashTableconstructor create a table by size and case insensitive flag.

       Methods

              reset -> none (none)
              The resetmethod resets the table so that it becomes empty.

              add -> none (String Object)
              The  addmethod  adds  a  new  object  in  the  table by key. The first argument is the key used to
              associate the object in the table. The second argument is the object to add.

              length -> Object (none)
              The lengthreturns the number of objects in the table.

              empty-p -> Boolean (none)
              The empty-ppredicate returns true if the table is empty.

              set-case-flag -> none (Boolean)
              The set-case-flagmethod sets the case insensitive flag. The table is automatically reset  when  is
              method is called.

              get-case-flag -> Boolean (none)
              The get-case-flagmethod returns the case insensitive flag.

              get -> Object (String)
              The getmethod returns the object associated with a key. If the key is not found, nil is returned.

              lookup -> Object (String)
              The  lookupmethod  returns the object associated with a key. If the key is not found, an exception
              is raised.

              get-key -> String (Integer)
              The get-keymethod returns the key associated with an entry in the table by index. If the index  is
              out of range, an exception is raised.

              get-object -> Object (Integer)
              The  get-objectmethod  returns  the  object associated with an entry in the table by index. If the
              index is out of range, an exception is raised.

       Set
       The Setbuiltin object provides the facility of a uniform set of objects. The Setobject is another example
       of iterable object. The Setobject provides support for forward and backward iteration.

       Predicate

              set-p

       Inheritance

              SerialIterable

       Constructors

              Set (none)
              The Setconstructor create an empty set.

              Set (Object...)
              The Setconstructor create a set from a list of object arguments.

       Methods

              reset -> none (none)
              The resetmethod reset the set. When the method is complete, the set is empty.

              length -> Integer (none)
              The lengthmethod returns the number of elements in the set. The minimum length is 0 for  an  empty
              set.

              add -> Object (Object)
              The  addmethod  appends  an  object in the set. If the object already exists in the set, it is not
              added twice. This is the main difference between a set  and  a  vector.  The  object  argument  is
              returned by this method.

              get -> Object (Integer)
              The getmethod return object by index.

              empty-p -> Boolean (Object)
              The empty-ppredicate returns true if the set is empty.

              exists-p -> Boolean (Object)
              The existspredicate returns true if the object argument exists in the set.

              merge -> none (Set)
              The  mergemethod merges the set argument into the calling set. If an element already exists in the
              set, it is not added.

              remix -> none (Integer)
              The remixmethod mixes the set by randomly swapping all the elements. This method  is  useful  when
              the set has been filled with a certain order by the access must be done randomly.

              remove -> Boolean (Object)
              The  removemethod  removes  the object argument from the set. if the object is removed, the method
              returns true. If the object is not in the set, the method returns false.

              get-random-subset -> Set (Integer)
              The get-random-subsetmethod returns a subset those cardinal is at least the size argument  with  a
              set of randomly chosen elements. The result set might have a cardinal less than the requested size
              if the calling set cardinal is less than the requested size.

              get-iterator -> Iterator (none)
              The  get-iteratorreturns  an  iterator  for  this  set. The iterator supports forward and backward
              iteration.

       Queue
       The Queuebuiltin object is a container used to queue and dequeue objects. The order of entry in the queue
       defines the order of exit from the queue. The queue is constructed either empty or with a set of objects.

       Predicate

              queue-p

       Inheritance

              Object

       Constructors

              Queue (none)
              The Queueconstructor create an empty queue.

              Queue (Object...)
              The Queueconstructor create a queue with a list of object arguments

       Methods

              enqueue -> Object (Object)
              The enqueueadds an object in the queue and returns the queued object.

              dequeue -> Object (none)
              The dequeuedequeue an object in the order it was queued.

              length -> Object (none)
              The lengthreturns the number of queued objects.

              empty-p -> Boolean (none)
              The empty-pmethod returns true if the queue is empty.

              flush -> none (none)
              The flushmethod flushes the queue so that it is empty.

       Heap
       The Heapbuiltin object is an object based heap class that organizes object with respect  to  a  key.  The
       heap is organized as a binary tree those root element is either the object with the highest or the lowest
       key.  A flag controls whether the heap is operating in ascending or descending mode. By default, the heap
       operates in ascending mode, which means that the root node is the lowest one. The heap is self-resizable.
       The object insertion is also controlled by a minimum and maximum key. if the key is below the minimum key
       or above the maximum key, the object is not inserted.

       Predicate

              heap-p

       Inheritance

              Object

       Constructors

              Heap (none)
              The Heapconstructor create an empty heap. By default the heap operates in ascending mode.

              Heap (Integer)
              The Heapconstructor create a heap with a specific size. By default the heap operates in  ascending
              mode.

              Heap (Boolean)
              The  Heapconstructor create a heap with a specific mode. If the mode is true, the heap operates in
              ascending order. If the mode is false, the heap operates in descending order. In ascending  order,
              the first object is the object with the lowest key.

              Heap (Integer Boolean)
              The  Heapconstructor  create  a heap with a specific size and mode. The first argument is the heap
              size. The second argument is the heap mode. If the mode is true, the heap  operates  in  ascending
              order.  If the mode is false, the heap operates in descending order. In ascending order, the first
              object is the object with the lowest key.

       Methods

              add -> none (Integer Object)
              The addmethod adds a new object in the heap by key. The first argument is the key used to set  the
              object position in the heap. The second argument is the object to add.

              pop -> Object (none)
              The poppops the first available in the heap. If the heap is empty, an exception is raised.

              length -> Object (none)
              The lengthreturns the number of objects in the heap.

              empty-p -> Boolean (none)
              The empty-pmethod returns true if the heap is empty.

              reset -> none (none)
              The resetmethod reset the heap so that it becomes empty.

              get-key -> Integer (Integer)
              The  get-keymethod  returns the key associated with an entry in the heap by index. If the index is
              out of range, an exception is raised.

              get-object -> Object (Integer)
              The get-objectmethod returns the object associated with an entry in the  heap  by  index.  If  the
              index is out of range, an exception is raised.

              get-mode -> Boolean (none)
              The  get-modemethod  returns  the  heap  operating mode. If the mode is true, the heap operates in
              ascending order. If the mode is false, the heap operates in descending order. In ascending  order,
              the first object is the object with the lowest key.

              min-key-p -> Boolean (none)
              The  min-key-ppredicate  returns  true if a minimum key has been set. The get-min-keymethod can be
              used to retrieve the minimum key value.

              max-key-p -> Boolean (none)
              The max-key-ppredicate returns true if a maximum key has been set. The  get-max-keymethod  can  be
              used to retrieve the maximum key value.

              reset-min-key -> none (none)
              The reset-min-keymethod resets the minimum key flag and value.

              reset-max-key -> none (none)
              The reset-max-keymethod resets the maximum key flag and value.

              set-min-key -> none (Integer)
              The set-min-keymethod sets the minimum key value.

              get-min-key -> Integer (none)
              The get-min-keymethod returns the minimum key value.

              set-max-key -> none (Integer)
              The set-max-keymethod sets the maximum key value.

              get-max-key -> Integer (none)
              The get-max-keymethod returns the maximum key value.

              resize -> none (none)
              The  resizemethod  resize  the  heap  with  a  new  size.  if the size is lower than the number of
              elements, the procedure does nothing.

       Bitset
       The Bitsetbuiltin object is a container for multi bit storage. The size of the bitset  is  determined  at
       construction. With the use of an index, a particular bit can be set, cleared and tested.

       Predicate

              bitset-p

       Inheritance

              Object

       Constructors

              Bitset (none)
              The BitSetconstructor create an empty bitset.

              Bitset (Integer)
              The Bitsetconstructor create a bitset those size is given by the integer argument.

              Bitset (String)
              The  Bitsetconstructor create a bitset by parsing the string argument. The string can be either in
              the normal binary form with or without the 0bprefix or in hexadecimal form with the 0xprefix.

              Bitset (Buffer Boolean)
              The Bitsetconstructor create a bitset from a buffer content. Each byte in  the  buffer  is  to  be
              placed  in  the bitset. The boolean argument is the ascending flag. When true the buffer bytes are
              used in ascending index order, thus making the fist byte in the buffer to be  used  as  the  first
              right  byte  in  the bitset. When false, the buffer bytes are used in descending index order, thus
              making the last byte in the buffer to be used as the first byte in the bitset.

       Methods

              reset -> none (none)
              The resetmethod reset the bitset and force the initial size to 0.

              marked-p -> Boolean (Integer)
              The marked-ppredicate returns true if the bit is set at the index argument.

              clear -> none (Integer)
              The clearmethod clears a bit by the index argument.

              mark -> none (Integer)
              The markmethod marks a bit by the index argument.

              mark -> none (Integer Boolean)
              The markmethod set the bit value by the index argument with the boolean second argument.

              add -> none (Integer Boolean)
              The addmethod add a bit in the bitset at the  given  position.  The  first  argument  is  the  bit
              position and the second argument is the bit value. The add method is the only method that resize a
              bitset.

              set -> none (Integer|String)
              The  setmethod set a bitset with an integer value. In the first form with an integer argument, the
              bitset is completely reset to a 64 bits bitset and the value set as an unsigned  integer.  In  the
              second  form  with  a  string argument, the bitset is reset and the string argument is parsed as a
              binary string with or without binary prefix or as a hexadecimal string.

              clamp -> none (Boolean)
              The clampmethod clamp a bitset by boolean value. The bitset size  is  determined  by  finding  the
              upper bit index that match the boolean argument.

              length -> Integer (none)
              The lengthmethod returns the length of the bitset in bits.

              to-byte -> Integer (Byte)
              The  to-bytemethod  maps  a  portion  of  the bitset to a byte at a specific position. The integer
              argument is the bit position that is mapped to the byte lsb.

              subset -> Integer (Bitset)
              The subsetmethod returns a sub bitset by size.

              subset -> Integer Integer (Bitset)
              The subsetmethod returns a sub bitset by size and position. The first integer argument is the  sub
              bitset size. The second argument is the bitset position where the sub bitset is extracted.

       Buffer
       The  Bufferbuiltin  object  is  a  byte buffer that is widely used with i/o operations. The buffer can be
       constructed with or without literal  arguments.  The  standard  methods  to  add  or  push-back  byte  or
       characters  are available. One attractive method is the write method which can write a complete buffer to
       an output stream specified as an argument. By default, the buffer operates in resize mode. If the  buffer
       is  configured  to operate in non-resize mode, an exception is raised when trying to add a character when
       the buffer is full.

       Predicate

              buffer-p

       Inheritance

              Object

       Constructors

              Buffer (none)
              The Bufferconstructor create an empty buffer. The buffer is configured to operate in resize mode.

              Buffer (Literal...)
              The Bufferconstructor create a buffer with a  list  of  literal  object  arguments.  Each  literal
              argument is used to produce a byte representation which is added into the buffer.

       Methods

              add -> Integer (Byte|Literal|Buffer)
              The addmethod adds a byte, a literal object or a buffer to the calling buffer. The object argument
              is automatically converted to a sequence of bytes. For a buffer, the entire content is copied into
              the buffer. The method returns the number of bytes added into the buffer.

              get -> Byte (none)
              The getmethod returns the next available byte in the buffer but do not remove it.

              read -> Byte (none)
              The readmethod returns the next available character and remove it from the buffer.

              reset -> none (none)
              The resetmethod reset the entire buffer and destroy its contents.

              length -> Integer (none)
              The lengthmethod returns the length of the buffer.

              full-p -> Boolean (none)
              The  full-ppredicate  return  true if the buffer is full. If the buffer is re-sizeable, the method
              always return false.

              empty-p -> Boolean (none)
              The empty-ppredicate return true if the buffer is empty.

              resize-p -> Boolean (none)
              The resize-ppredicate return true if the buffer is re-sizeable.

              to-string -> String (none)
              The to-stringmethod returns a string representation of the buffer.

              format -> String (none)
              The formatmethod returns an octet string representation of the buffer.

              pushback -> Integer (Byte|Literal|Buffer)
              The pushbackmethod push back a byte, a literal object or a  buffer  in  the  calling  buffer.  The
              object  argument  is  automatically  converted  to  a  sequence of bytes. For a buffer, the entire
              content is copied into the buffer. The method returns the number of byte pushbacked.

              get-host-word -> Integer (none)
              The get-host-wordmethod reads a word from the buffer and convert it to an  integer.  The  word  is
              assumed  to  be in network byte order and is converted into the host byte order before becoming an
              integer.

              get-host-quad -> Integer (none)
              The get-host-quadmethod reads a quad from the buffer and convert it to an  integer.  The  quad  is
              assumed  to  be in network byte order and is converted into the host byte order before becoming an
              integer.

              get-host-octa -> Integer (none)
              The get-host-octamethod reads an octa from the buffer and convert it to an integer.  The  octa  is
              assumed  to  be in network byte order and is converted into the host byte order before becoming an
              integer.

              set-resize -> none (Boolean)
              The set-resizemethod set the resize flag for a particular buffer. This method can be used  at  any
              time.

              shl -> none (Integer)
              The shlmethod shift left the buffer by a certain number of characters. The integer argument is the
              number of characters to shift.

       BlockBuffer
       The BlockBufferbuiltin object is a special buffer class designed to hold bytes in a bound or unbound way.
       In  the  bound  mode,  the buffer size is know and the buffer cannot be resized. In the unbound mode, the
       buffer size is unknown and the buffer can be resized as needed. The block buffer is designed to be loaded
       by various means, including data, buffer or stream. Additionaly, the block buffer can be  used  to  write
       into  another  buffer  or a stream by block. By default the read and write block size is the system block
       size and the default mode is the bound mode, which can be changed by setting the buffer resize flag.

       Predicate

              block-buffer-p

       Inheritance

              Buffer

       Constructors

              BlockBuffer (none)
              The BlockBufferconstructor create a non-resizable empty block buffer.

              BlockBuffer (Integer)
              The BlockBufferconstructor create a non-resizable block buffer. The integer argument is the  block
              buffer size.

       Methods

              read-count -> Integer (none)
              The  read-countmethod  returns  the  number  of characters read by the buffer. The read counter is
              increased during any read operation that might decrease the buffer length.

              write-count -> Byte (none)
              The write-countmethod returns the number of characters writen into the buffer.

              copy -> Integer (String|Buffer|InputStream|OutputStream)
              The copymethod copies an object into or from the block buffer.  Inthe  first  form,  a  string,  a
              buffer  or  an  input  stream  is  isued to fill the buffer. If the buffer is resizable, the whole
              contents of the objects are copied into the block buffer. If the buffer is not resizable, the copy
              operation stops when the buffer is full. The copy method consumes characters with a buffer  or  an
              input  stream object. With an output stream object, the block buffer characters are consumed while
              beeing written to the output stream. The total number of characters copied  is  returned  by  this
              method. When using a multiple types object that implements both the input and output stream model,
              the priority is given to the input stream type.

              copy-input-stream -> Integer (InputStream)
              The  copy-input-streammethod  copies an input stream into the block buffer. This method is similar
              to the copymethod except that it operates only with an input stream. Such method is  usefull  when
              using object that implements multiple stream types.

              copy-output-stream -> Integer (OutputStream)
              The copy-output-streammethod copies an output stream into the block buffer. This method is similar
              to  the copymethod except that it operates only with an output stream. Such method is usefull when
              using object that implements multiple stream types.

       Property
       The Propertybuiltin object is container for a name/value pair. Generally, the  property  object  is  used
       within a property list. An optional information field can be inserted into the property.

       Predicate

              property-p

       Inheritance

              Serial

       Constructors

              Property (none)
              The Propertyconstructor create an empty property.

              Property (String)
              The Propertyconstructor create a property by name. The first argument is the property name.

              Property (String Literal)
              The  Propertyconstructor  create  a property by name and value. The first argument is the property
              name. The second argument is the property value.

              Property (String String Literal)
              The Propertyconstructor create a property by name, info and  value.  The  first  argument  is  the
              property name. The second argument is the property info. The third argument is the property value.

       Methods

              set -> none (String Literal)
              The  setmethod  sets  the  property  name  and value. The first argument is the property name. The
              second argument is the property value, which is a literal converted to its string representation.

              set-name -> none (String)
              The set-namemethod sets the property name.

              get-name -> String (none)
              The get-namemethod returns the property name.

              set-info -> none (String)
              The set-infomethod sets the property information.

              get-info -> String (none)
              The get-infomethod returns the property information.

              set-value -> none (Literal)
              The set-valuemethod sets the property value. The literal  argument  is  converted  to  its  string
              representation.

              get-value -> String (none)
              The get-valuemethod returns the property string value.

              get-boolean-value -> Boolean (none)
              The get-boolean-valuemethod returns the property boolean value.

              get-integer-value -> Integer (none)
              The get-integer-valuemethod returns the property integer value.

              get-real-value -> Real (none)
              The get-real-valuemethod returns the property real value.

       Plist
       The  Plistbuiltin object is a base container class used to manage property objects in an ordered way. The
       property list operates by maintaining a vector of property object along with a hash table that permits to
       find the object quickly.

       Predicate

              plist-p

       Inheritance

              SerialIterableNameable

       Constructors

              Plist (none)
              The Plistconstructor create an empty property list.

              Plist (Boolean)
              The Plistconstructor create a property list with a case flag.

              Plist (String)
              The Plistconstructor create a property list by name.

              Plist (String String)
              The Plistconstructor create a property list by name and info.

       Methods

              set-name -> none (String)
              The set-namemethod sets the property list name.

              set-info -> none (String)
              The set-infomethod sets the property list info.

              get-info -> String (none)
              The get-infomethod returns the property list info.

              add -> none (Property | String Literal | String String Literal)
              The addmethod add a property by object or name and value in the property list. In its  first  form
              the  object  is a property object. In the second form, the first argument is the property name and
              the second argument is the property value. In the  the  third  form  the  first  argument  is  the
              property  name,  the  second  argument  is the property info and the this argument is the property
              value. if the property already exists an exception is raised.

              set -> none (Property | String Literal | String String Literal)
              The setmethod add or sets the property by object or name and value in the property  list.  In  the
              first  form,  the  argument  is the property itself. In the second form, the first argument is the
              property name and the second argument is the property value. In the third form,  the  property  is
              set by name, info and value. If the property already exists, the property value is changed.

              get -> Property (Integer)
              The getmethod returns a property by index.

              reset -> none (none)
              The resetmethod resets the property lists

              empty-p -> Boolean (none)
              The emptyp-predicate returns true if the property list is empty.

              length -> Integer (none)
              The lengthmethod returns the number of properties in the property list.

              exists-p -> Boolean (String)
              The exists-pmethod returns true if a property exists. The string argument is the property name.

              find -> Property (String)
              The findmethod finds a property by name. The string argument is the property name. If the property
              does not exists, nil is returned.

              lookup -> Property (String)
              The  lookupmethod  finds  a  property  by  name.  The string argument is the property name. If the
              property does not exists, an exception is raised.

              get-value -> String (String)
              The get-valuemethod returns the property value. The string argument is the property name.  If  the
              property does not exist, an exception is raised.

              to-print-table -> PrintTable (none | Boolean | Boolean Boolean)
              The  to-print-tablemethod  converts  the  property list into a print table. The print table can be
              formated with the property info and value. In the first form, the print table is formated  without
              the  info  field  in normal value. In the second form, the boolean flag controls whther or not the
              info field is added in the table. In the third form, the second boolean value controls  whther  or
              not the real property value are converted in scientific notation.

SPECIAL OBJECTS

       This  chapter  is  a  reference  of  the reserved special objects with their respective built-in methods.
       Special objects are those objects which interact with the interpreter.

       Object
       The base object Objectprovides several methods which are common to all objects.

       Methods

              repr -> String (none)
              The reprmethod returns the object name in the form of a string. The result string  is  called  the
              representation string.

              rdlock -> none (none)
              The rdlockmethod try to acquire the object in read-lock mode. If the object is currently locked in
              write mode by another thread, the calling thread is suspended until the lock is released.

              wrlock -> none (none)
              The  wrlockmethod  try to acquire the object in write-lock mode. If the object is currently locked
              by another thread, the calling thread is suspended until the lock is released.

              unlock -> none (none)
              The unlockmethod try to unlock an object. An object will be unlocked if and only  if  the  calling
              thread is the one who acquired the lock.

              clone -> Object (none)
              The  clonemethod  returns  a  clone  of  the  calling  object.  If the object cannot be cloned, an
              exception is raised.

       Interp
       The Interpis the interpreter object which is automatically bounded for each executable program. There  is
       no constructor for this object. The current interpreter is bounded to the interpreserved symbol.

       Predicate

              interp-p

       Inheritance

              Runnable

       Constants

              argv
              The  argvdata  member  holds  the  interpreter argument vector. The vector is initialized when the
              interpreter is created. Each argument is stored as a string object.

              os-name
              The os-namedata member holds the operating system name. The data member evaluates as a string.

              os-type
              The os-typedata member holds the operating system type. The data member evaluates as a string.

              version
              The versiondata member holds the full engine version. The data member evaluates as a string.

              program-name
              The program-namedata member holds the interpreter program name. The data  member  evaluates  as  a
              string.

              major-version
              The  major-versiondata  member  holds  the  interpreter  major  revision  number.  The data member
              evaluates as an integer.

              minor-version
              The minor-versiondata member  holds  the  interpreter  minor  revision  number.  The  data  member
              evaluates as an integer.

              patch-version
              The  patch-versiondata  member  holds  the  interpreter  patch  revision  number.  The data member
              evaluates as an integer.

              afnix-uri
              The afnix-uridata member holds the official uri. The data member evaluates as a string.

              machine-size
              The machine-sizedata member holds the interpreter machine size expressed  in  bits.  Most  of  the
              time,  the  machine  size  is  either  32  or 64 bits. If something else is returned, it certainly
              reflects an exotic platform.

              loader
              The loaderdata member holds the  interpreter  library  loader.  Under  normal  circumstances,  the
              library loader should not be used and the standard interp:libraryform should be used.

              resolver
              The  resolverdata  member  holds  the  interpreter  resolver.  The  resolver  can  be  used to add
              dynamically a librarian or a directory to the interpreter module resolver.

       Methods

              load -> Boolean (String)
              The loadmethod opens a file those name is the method argument and executes each form in  the  file
              by  doing  a  read-eval loop. When all forms have been executed, the file is closed and the method
              returns true. In case of exception, the file is closed and the method returns false.

              library -> Library (String)
              The librarymethod opens a shared library and a returns a shared library object.

              launch -> Thread (form|thread form)
              The launchmethod executes the form argument in a normal thread. The normal thread  is  created  by
              cloning  the  current interpreter. In the first form, a thread object is created by the method and
              return when the thread as been launched. In the second form, a thread is started by binding a form
              to the thread object.

              daemon -> Boolean (none)
              The dameonmethod put the running interpreter in dameon mode. A new detached processed  is  spawned
              with the interpreter attached to it. The boolean result indicates whether or not the operation was
              successful.

              set-epsilon -> none (Real)
              The  set-epsilonmethod  sets  the interpreter epsilon which corresponds to the real precision. The
              real precisionis used by the ?=operator to compare real values.

              get-epsilon -> Real (none)
              The get-real precisionmethod  returns  the  interpreter  epsilon  which  correspond  to  the  real
              precision. The real-precisionis used by the ?=operator to compare real values.

              dup -> Interp (none|Terminal)
              The  dupmethod  returns a clone of the current interpreter by binding the terminal steam argument.
              Without argument, a new terminal object is automatically created and bound to  the  newly  created
              interpreter.

              loop -> Boolean (none)
              The  loopmethod  executes  the  interpreter main loop by reading the interpreter input stream. The
              loop is finished when the end-of-stream is reached with the input stream.  The  method  returns  a
              boolean flag to indicate whether or not the loop was successful.

              set-primary-prompt -> none (String)
              The set-primary-promptmethod sets the interpreter terminal primary prompt which is used during the
              interpreter main loop.

              set-secondary-prompt -> none (String)
              The set-secondary-promptmethod sets the interpreter terminal secondary prompt which is used during
              the interpreter main loop.

              get-primary-prompt -> String (none)
              The get-primary-promptmethod returns the interpreter terminal primary prompt.

              get-secondary-prompt -> String (none)
              The get-secondary-promptmethod returns the interpreter terminal secondary prompt.

              read-line -> String (none|Boolean)
              The  read-linemethod  reads  a  line from the interpreter terminal. If no terminal is bound to the
              interpreter, the empty string is returned. In the first form, a line is read  after  printing  the
              primary  prompt.  In  the  second  form,  a  boolean flag controls the prompt disply, which can be
              primary or secondary.

              read-passphrase -> String (none|String)
              The read-passphrasemethod reads a pass-phrase from the interpreter terminal.  If  no  terminal  is
              bound  to  the  interpreter,  the  empty string is returned. With a string argument, the string is
              displayed as a prompt, before reading the passphrase.

       Thread
       The Threadobject is a special object which acts as a thread descriptor. Such object is created  with  the
       launchreserved keyword.

       Predicate

              thread-p

       Inheritance

              Object

       Constructors

              Thread (none)
              The  Threadconstructor create a default thread object without any form bound to it. The object can
              be later used with the launchcommand.

       Methods

              end-p -> none (none)
              The end-ppredicate returns true if the thread argument has finished. This predicate indicates that
              the thread result is a valid one.

              wait -> none (none)
              The waitmethod suspends the calling thread until the thread argument as completed. The  waitmethod
              is the primary mechanism to detect a thread completion.

              result -> Object (none)
              The  resultmethod  returns  the  thread  result.  If  the thread is not completed, the nilvalue is
              returned. However, this method should not be used to check if  a  thread  has  completed  and  the
              waitmethod must be used because a thread result might be nil.

       Condvar
       The condition variable Condvarobject is a special object which provides a mean of synchronization between
       one and several threads. The condition is said to be false unless it has been marked. When a condition is
       marked,  all  threads  waiting for that condition to become true are notified and one thread is activated
       with that condition.

       Predicate

              condvar-p

       Inheritance

              Object

       Constructors

              Condvar (none)
              The Condvarconstructor creates a default condition variable.

       Methods

              lock -> none (none)
              The lockmethod locks the condition variable mutex. If the mutex is  already  locked,  the  calling
              thread  is  suspended until the lock is released. When the method returns, the resumed thread owns
              the condition variable lock. It is the thread responsibility to reset the condition  variable  and
              unlock it.

              mark -> none (none)
              The  markmethod  marks  the  condition variable and notify all pending threads of such change. The
              mark method is the basic notification mechanism.

              wait -> none (none)
              The waitmethod waits for a condition variable to  be  marked.  When  such  condition  occurs,  the
              suspended  thread  is run. When the method returns, the resumed thread owns the condition variable
              lock. It is the thread responsibility to reset the condition variable and unlock it.

              reset -> none (none)
              The resetmethod acquires the condition variable mutex, reset the mark, and unlock it. If the  lock
              has been taken, the calling thread is suspended.

              unlock -> none (none)
              The  unlockmethod  unlock the condition variable mutex. This method should be used after a call to
              lockor wait.

              wait-unlock -> none (none)
              The wait-unlockmethod wait until a condition variable is marked. When such condition  occurs,  the
              suspended  thread is run. Before the method returns, the condition variable is reset and the mutex
              unlocked. With two threads to synchronize, this is the preferred method compared to wait.

       Lexical
       The Lexicalobject is a special object built by the reader. A lexical  name  is  also  a  literal  object.
       Although the best way to create a lexical name is with a form, the lexical object can also be constructed
       with a string name. A lexical name can be mapped to a symbol by using the mapmethod.

       Predicate

              lexical-p

       Inheritance

              Literal

       Constructors

              Lexical (none)
              The Lexicalconstructor create an empty lexical object which evaluates to nil.

              Lexical (String)
              The Lexicalconstructor create a lexical object using the string argument as the lexical name.

       Methods

              map -> Object (none)
              The  mapmethod  returns  the object that is mapped by the lexical name. Most of the time, a symbol
              object is returned since it is the kind of object stored in  a  nameset.  Eventually  the  mapping
              might returns an argument object if used inside a closure.

       Qualified
       The  Qualifiedobject  is a special object built by the reader. A qualified object is similar to a lexical
       object. It is also a literal object. Like a lexical name, a qualified name can be created with a form  or
       by direct construction with a name. Like a lexical name, the mapmethod can be used to retrieve the symbol
       associated with that name.

       Predicate

              qualified-p

       Inheritance

              Literal

       Constructors

              Qualified (none)
              The Qualifedconstructor create an empty qualified name object which evaluates to nil.

              Qualified (String)
              The Qualifiedconstructor create a qualified name object using the string argument as the qualified
              name. The name is parse for qualified name syntax adherence.

       Methods

              map -> Object (none)
              The  mapmethod returns the object that is mapped by the qualified name. Most of the time, a symbol
              object is returned since it is the kind of object stored in  a  nameset.  Eventually  the  mapping
              might returns an argument object if used inside a closure.

       Symbol
       The  Symbolobject is a special object used by nameset to map a name with an object. Generally a symbol is
       obtained by mapping a lexical or qualified name. As an object, the symbol holds a name, an object  and  a
       constant  flag.  The  symbol  name  cannot  be  changed  since  it might introduce inconsistencies in the
       containing nameset. On the other hand, the constant flagand the object can be  changed.  A  symbol  is  a
       literal  object. A symbol that is not bounded to a nameset can be constructed dynamically. Such symbol is
       said to be not interned.

       Predicate

              symbol-p

       Inheritance

              Literal

       Constructors

              Symbol (String)
              The Symbolconstructor create a symbol by name. The associated object is marked as nil.

              Symbol (String Object)
              The Symbolconstructor create a symbol by name and bind the object argument to the symbol.

       Methods

              get-const -> Boolean (none)
              The get-constmethod returns the symbol const flag. If the flag is true, the symbol  object  cannot
              be changed unless that flags is reset with the set-constmethod.

              set-const -> none (Boolean)
              The  set-constmethod set the symbol const flag. This method is useful to mark a symbol as const or
              to make a const symbol mutable.

              get-object -> Object (none)
              The get-objectmethod returns the symbol object.

              set-object -> none (Object)
              The set-objectmethod set the symbol object. The object can be obtained by evaluating the symbol.

       Closure
       The Closureobject is a special object that  represents  a  lambda  or  gamma  expression.  A  closure  is
       represented  by  a  set  of  arguments,  a  set of closed variables and a form to execute. A boolean flag
       determines the type of closure. The closure predicate lambda-preturns true if the  closure  is  a  lambda
       expression.  Closed  variables can be defines and evaluated with the use of the qualified name mechanism.
       Closure mutation is achieved with the add-argumentand set-formmethod. An empty closure can be defined  at
       construction as well.

       Predicate

              closure-p

       Inheritance

              Object

       Constructors

              Closure (none)
              The  Closureconstructor  create  a  default  closure.  When the closure is created, a local set of
              arguments and closed variables is generated. Note that such local set  is  dynamic.  There  is  no
              restriction  to reconfigure a particular lambda at run-time. The difference between a lambda and a
              gamma expression resides in the nameset binding when the closure is called.  With  a  lambda,  the
              closure  nameset  parent  is  the  calling nameset. With a gamma expression, the parent nameset is
              always the top-level interpreter nameset. Note also, that the symbol selfis automatically  bounded
              for this closure.

              Closure (Boolean)
              The Closureconstructor create a closure which acts as lambda expression if the boolean argument is
              true. If the boolean argument is false, the closure will behave like a gamma expression.

       Methods

              gamma-p -> Boolean (none)
              The gamma-ppredicate returns true if the closure is a gamma expression. The predicate returns true
              for a lambda expression.

              lambda-p -> Boolean (none)
              The  lambda-ppredicate  returns  true if the closure is a lambda expression. The predicate returns
              false for a gamma expression.

              get-form -> Object (none)
              The get-formmethod returns the closure form object.

              set-form -> none (Object)
              The set-formmethod sets the closure form object.

              add-argument -> none (String|Lexical|form)
              The add-argumentmethod adds an argument to the closure.  The  argument  object  can  be  either  a
              string, a lexical object of a simple form that defines a constant lexical name.

       Librarian
       The  Librarianobject is a special object that read or write a librarian. Without argument, a librarian is
       created for writing purpose. With one file name argument, the librarian is created for reading.

       Predicate

              librarian-p

       Inheritance

              Nameable

       Constructors

              Librarian (none)
              The Librarianconstructor creates a librarian for writing. Initially, the librarian  is  empty  and
              files must be added with the addmethod.

              Librarian (String)
              The  Librarianconstructor  creates  a  librarian  for reading using the name as the librarian file
              name.

       Methods

              add -> none (String)
              The addmethod adds a file into the librarian. The librarian must have been opened in write mode.

              write -> none (String)
              The writemethod writes a librarian to a file those name is the argument.

              length -> Integer (none)
              The lengthmethod returns the number of file in the librarian. This method work, no matter how  the
              librarian has been opened.

              exists-p -> Boolean (String)
              The exists-ppredicate returns true if the file argument exists in the librarian.

              extract -> InputMapped (String)
              The extractmethod returns an input stream mapped to the file name argument.

       Resolver
       The  Resolverobject  is  a  special  object  that  gives  the ability to open a file based on a file path
       resolver. The resolver maintains a list of valid path and returns an input stream for a file on demand.

       Predicate

              resolver-p

       Inheritance

              Object

       Constructors

              Resolver (none)
              The Resolverconstructor creates a default resolver. Once created, the addmethod can be used to add
              path to the resolver.

       Methods

              add -> none (String)
              The addmethod adds a path into the resolver. The path can  points  either  to  a  directory  or  a
              librarian.

              lookup -> InputStream (String)
              The lookupmethod resolves the file name argument and returns an input stream for that file.

              to-string -> String (String)
              The  to-stringmethod resolves the file name argument and returns a string respresentation for that
              file.

              valid-p -> Boolean (String)
              The valid-ppredicate returns true if the file name argument can be resolved. If the file name  can
              be resolved, the lookupmethod can be called to get an input stream.

       PrintTable
       The  PrintTable  class  is  a  formatting  class  for tables. The table is constructed with the number of
       columns -- default to 1 -- and eventually the number of rows. Once the  table  is  created,  element  are
       added  to  the  table with the addmethod. Specific table element can be set with the setmethod. The class
       provide a formatmethod those default is to print the table on the interpreter standard  output.  With  an
       output  stream  argument  or  a  buffer,  the  table  is formatted to these objects. The table formatting
       includes an optional column width, a filling character and a filling  direction  flag.  By  default,  the
       column  width  is  0.  This  means  that the column width is computed as the maximum length of all column
       elements. If the column width is  set  with  the  set-column-sizemethod,  the  string  element  might  be
       truncated  to  the  left or right -- depending on the filling flag -- to fit the column width. Each table
       element can also be associated with a tag. The tag-pmethod can be used to test for the presence of a tag,
       while the set-tagand get-tagmethods can be used to set or get the tag by row and column coordinates.

       Predicate

              print-table-p

       Inheritance

              Object

       Constructors

              PrintTable (none)
              The PrintTableconstructor creates a default table with one column.

              PrintTable (Integer)
              The PrintTableconstructor creates a table with a pre-defined number of columns  specified  in  the
              constructor argument.

              PrintTable (Integer Integer)
              The  PrintTableconstructor creates a table with a pre-defined number of columns and rows specified
              in the constructor arguments.

       Methods

              head-p -> Boolean (none)
              The head-ppredicate returns true if the table header is defined.

              add-head -> none ([String+])
              The add-headmethod add to the table header the string arguments. The number of arguments  must  be
              equal to the number of columns.

              get-head -> String (Integer)
              The  get-headmethod  returns  a  table header element by column index. The integer argument is the
              header row index.

              set-head -> none (Integer String)
              The set-headmethod sets a table header element by column index. The first argument is  the  header
              column index and the second is the header string value to set.

              add -> Integer (none|[Literal...])
              The  addmethod  serves several purposes. Without argument, a new row is added and the row index is
              returned. The row index can be later used with the setmethod to set a  particular  table  element.
              With one or several literal arguments, those length must match the number of columns, a new row is
              created and those arguments added to the table. The row number is also returned.

              get -> String (Integer Integer)
              The  getmethod  returns  a  particular  table element by row and column. The first argument is the
              table row index and the second is the table column index.

              set -> none (Integer Integer Literal)
              The setmethod sets a particular table element by row and column. The first argument is  the  table
              row  index and the second is the table column index. The last argument is a literal object that is
              converted to a string prior its insertion.

              tag-p -> Boolean (Integer Integer)
              The tag-ppredicate returns true if a tag is present at  a  particular  table  element.  The  first
              argument is the table row index and the second is the table column index.

              set-tag -> none (Integer Integer String)
              The  set-tagmethod  sets a particular table tag by row and column. The first argument is the table
              row index and the second is the table column index. The last argument is the tag value.

              get-tag -> String (Integer Integer)
              The get-tagmethod returns a particular table tag by row and column.  The  first  argument  is  the
              table row index and the second is the table column index.

              dump -> none|String (none|Integer|OutputStream|Buffer)
              The  dumpmethod  dumps  the  table  to an output stream or a buffer. Without argument, the default
              interpreter output stream is used. With an integer argument, the  specified  row  is  used  and  a
              string  is  returned. With a buffer or an output stream, the whole table is written and nothing is
              returned.

              merge -> none (PrintTable[Boolean Boolean])
              The mergemethod merge a table into the calling one. In the first for, only the  table  content  is
              merged.  In the second form, the boolean arguments controls whether the header and footer shall be
              merge as well.

              format -> none|String (none|Integer|OutputStream|Buffer)
              The formatmethod writes the formatted table to an output stream or a buffer. Without argument, the
              default interpreter output stream is used. With an integer argument, the specified row is used and
              a string is returned. With a buffer or an output stream, the whole table is written and nothing is
              returned.

              get-rows -> Integer (none)
              The get-rowsmethod returns the number of rows in the table.

              add-columns -> Integer (none)
              The add-columnsmethod adds 1 or more columns at the end of the table.

              get-columns -> Integer (none)
              The get-columnsmethod returns the number of columns in the table.

              set-column-size -> none (Integer Integer)
              The set-column-sizemethod sets the desired width for a particular column. The  first  argument  is
              the  column  index  and the second argument is the column width.If 0 is given, the column width is
              computed as the maximum of the column elements.

              get-column-size -> Integer (Integer)
              The get-column-sizemethod returns the desired width for a particular column.

              set-column-fill -> none (Integer Character)
              The set-column-fillmethod sets the filling character for a particular column. The  first  argument
              is the column index and the second argument is a character to use when filling a particular column
              element. The default filling character is the blank character.

              get-column-fill -> Character (Integer)
              The get-column-fillmethod returns the filling character for a particular column.

              set-column-direction -> none (Integer Boolean)
              The set-column-directionmethod sets the direction flag for a particular column. The first argument
              is the column index and the second argument is a boolean. A false value indicates a filling by the
              left while a true value indicates a filling by the right. The column filling character is used for
              this operation.

              get-column-direction -> Boolean (Integer)
              The get-column-directionmethod returns the direction flag for a particular column.

       Logger
       The  Looger class is a message logger that stores messages in a buffer with a level. The default level is
       the level 0. A negative level generally indicates a warning or an  error  message  but  this  is  just  a
       convention which is not enforced by the class. A high level generally indicates a less important message.
       The  messages  are stored in a circular buffer. When the logger is full, a new message replace the oldest
       one. By default, the logger is initialized with a 256 messages capacity that can be resized.

       Predicate

              logger-p

       Inheritance

              Object

       Constructors

              Logger (none)
              The Loggerconstructor creates a default logger.

              Logger (Integer)
              The Loggerconstructor creates a logger with a specific size specified as the constructor argument.

              Logger (String)
              The Loggerconstructor creates a logger with an information argument.  The  information  string  is
              later used to format the logged messages.

              Logger (Integer String)
              The Loggerconstructor creates a logger with a specific size and an information argument. The first
              argument is the logger size. The second argument is the information string. The information string
              is later used to format the logged messages.

       Methods

              add -> none (String|String Integer)
              The  addmethod  adds  a  message in the logger. With one argument, the method take a single string
              message. with two arguments, the first arguments is the message and the  second  argument  is  the
              message level.

              reset -> none (none)
              The resetmethod reset the logger class by removing all messages.

              length -> Integer (none)
              The lengthmethod returns the number of messages stored in the logger object.

              resize -> none (Integer)
              The  resizemethod  resize  the  logger class by increasing the size of the message buffer. The old
              messages are kept during the resizing operation.

              set-info -> none (String)
              The set-infomethod sets the logger information string. The  information  string  is  used  by  the
              derived classes when a message is printed.

              get-info -> String (none)
              The  get-infomethod  returns  the logger information string. The information string is used by the
              derived classes when a message is printed.

              set-default-level -> none (Integer)
              The set-default-levelmethod sets the default level use for storing message. This parameter is used
              with the addmethod in conjunction with the message argument. When the message level is  specified,
              the default message level is ignored.

              get-default-level -> Integer (none)
              The  get-default-levelmethod  returns  the  default  message level used by the logger. The default
              message level is used by the addmethod when the message level is not specified directly.

              get-message -> String (Integer)
              The get-messagemethod returns a logger message by index.  The  integer  argument  is  the  message
              index.

              get-full-message -> String (Integer)
              The get-full-messagemethod returns a fully formatted logger message by index. The integer argument
              is the message index. The message includes the time and contents.

              get-message-time -> Integer (Integer)
              The  get-message-timemethod  returns the logger message time by index. The integer argument is the
              message index.

              get-message-level -> Integer (Integer)
              The get-message-levelmethod returns the logger message level by index. The integer argument is the
              message index.

              set-output-stream -> none (OutputStream|String)
              The set-output-streammethod set the logger output stream. The  output  stream  can  be  either  an
              output stream or an output file name.

       Counter
       The  Counter  class  is  a  mechanism  designed  to count integer both upward or downward. The counter is
       initialized with a start and end value. With a single value, the start value is set to 0 and the  counter
       direction  determined  by the end value. The counter object is also a literal object, meaning that it can
       be directly printed. The object is also designed to be used directly in a loop.

       Predicate

              counter-p

       Inheritance

              Literal

       Constructors

              Counter (none)
              The Counterconstructor creates a default counter. Since, both start and end values are initialized
              to 0, this object will never count.

              Counter (Integer)
              The Counterconstructor creates an upward counter. If the argument value, the initial counter value
              is the argument value and the counter will counter from the value to 0. If the argument  value  is
              positive,  the final counter value is the argument value and the counter will count from 0 to this
              value.

              Counter (Integer Integer)
              The Counterconstructor creates a counter with an  initial  and  final  values.  Depending  on  the
              initial and final value the counter might be an upward or a downward counter.

       Methods

              reset -> none (none)
              The resetmethod reset the counter to its start value.

              step-p -> Boolean (none)
              The step-ppredicate checks if the counter can be moved by one position. If the test is successful,
              the counter is moved upward or downward. the method returns the result of the test.

              valid-p -> Boolean (none)
              The valid-ppredicate returns true if the counter can be moved by one position.

       Lexer
       The  Lexerclass  is the lexical analyzer for the writing system. The lexical analyzer consumes characters
       from an input stream and produces tokens. From a token, it is possible to derive an object in the form of
       a constant object which can be evaluated to a literal or to another object in the presence of  a  lexical
       or  qualified  object.  The  lexical  analyzer  is  integrated inside the form reader. As an object it is
       possible to use it when it becomes necesary to parse strings.

       Predicate

              lexer-p

       Inheritance

              Object

       Methods

              get-token -> Token (none)
              The get-tokenmethod returns the next available token.

              get-object -> Object (none)
              The get-objectmethod returns the next available object.

              get-line-number -> Integer (none)
              The get-line-numbermethod returns the token line number which is the  current  line  number  under
              processing.

       Former
       The  Formerclass  is  an  abstract  class  used  to  derive  form reader. The class defines only a method
       parsewhich returns a form. The method getlnumreturns the form line number.

       Predicate

              former-p

       Inheritance

              Object

       Methods

              parse -> Form (none)
              The parsemethod returns the next available form.

              get-line-number -> Integer (none)
              The get-line-numbermethod returns the form line number which is  the  current  line  number  under
              processing.

       Reader
       The  Readerclass  is the general purpose form reader which supports the writing system syntax. The reader
       is primarily used to parse file or be run interactively. The reader consumes tokens until a complete form
       can be built. The form does  not  have  any  particular  meaning  and  must  be  post  processed  by  the
       application.

       Predicate

              reader-p

       Inheritance

              FormerNameable

       Constructors

              Reader (none)
              The Readerconstructor creates a default reader.

              Reader (String|InputStream)
              The  Readerconstructor  creates a reader by string or input stream. In the first form, a string is
              mapped into a string stream which is used by the reader to parse form.  In  the  second  form,  an
              input stream is bound to the reader to parse forms.

       Loader
       The  Loaderclass  is a library loader. The loader keep a list of loaded libraries. This class is bound to
       the interpreter and cannot be constructed. Use the interp:loaderto access  the  interpreter  loader.  for
       safety  reason, it is not possible to add a libray to the loader. The interpreter method interp:libraryis
       the prefered method to access the loader.

       Predicate

              loader-p

       Inheritance

              Object

       Methods

              length -> Integer (none)
              The lengthmethod returns the number of loaded libraries.

              get -> Library (Integer)
              The getmethod returns a library object by index.

              exists-p -> Boolean (String)
              The exists-ppredicate returns true if a library is already loaded in the interpreter.

AFNIX                                              2017-11-22                                           VOL-2(7)