vol-2 - afnix reference manual
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 }
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.
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.
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.