afnix-norms(7)
std-us-norms - afnix reference manual
Description
STD-US-NORMS
NAME
std-us-norms - afnix reference manual
RESERVED KEYWORDS
Reserved keyword are, with symbols and literals, the basic constituents of the writing system. With couple of exception, reserved keywords are in fact special forms. During the execution, a special
assert
The assert special 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. An optional boolean can be used to
disabe exact compare. This is usefull for real number
assertion where an apprroximate comparison is needed. By
default, the assertion checking is turned off. The
interpreter option -f assert enables 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" assert "form 1" "form 2" "exact compare"
Example
assert true (== 1 1) assert 3 (+ 2 1) assert 1.234567 1.234568 false
block
The block special 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 class special 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 const special 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. const
can 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 delay special form delays the evaluation of the form
argument by creating a Promise object. 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 Promise object 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 do special 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 enum special form creates an enumeration from a list of
literal. The result object is an Enum object that holds the
enumerated items. An item evaluation results with an Item
object that is bound to the enumeration object.
Syntax
enum "literal" ...
Example
const e (enum E1 E2 E3)
errorln
The errorln special 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 error
special form behaves like errorln excepts 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 eval special 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 for special form provides a facility to iterate on
iterable objects. The Cons, List and Vector objects 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 force special 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, force keyword 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 if special form executes a form based on the evaluation
of a boolean expression. In its first representation, if
executes 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 lambda special 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 const argument.
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 launch special 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 loop special 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 loop special 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 nameset special 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 println special 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 print
special form behaves like println excepts 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 protect special 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 return special form causes the current expression to
stop its evaluation and returns the argument or nil. The
return keyword 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)
break
The break special form causes the current expression to stop
its evaluation and returns the argument or nil. The return
keyword is primarily used in loops where the loop result is
evaluated by the breaking expression. Outside of a loop,
break will behaves like return.
Syntax
break "object"
Example
break (+ 1 2)
continue
The continue special form causes the current expression to
stop its evaluation and returns the argument or nil. The
continue keyword is primarily used in loops where the loop
is restarted at the point of evaluation. Outside of a loop,
break will behaves like return.
Syntax
continue "object"
Example
continue (+ 1 2)
sync
The sync special 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 switch special 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 else special 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 throw special 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 what can 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 trans special form creates or sets a symbol with an
object. trans searches 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 trans
keyword can also be used with qualified names. With 3 or 4
arguments, trans creates 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 try special 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 what is
bound to the exception. If the exception is nil, the symbol
what is 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 unref special form unreference a symbol.
Syntax
unref symbol
Example
const number 123 unref number
while
The while special form is used to build loop with backward
condition. The loop construct accepts either 2 or 3
arguments. With 2 argument, the first argument is the loop
condition and the second argument is the loop body that must
evaluate to a boolean. With 3 arguments, the first argument
is the initial condition that is executed only once.
Syntax
while "condition" "body" while "initial" "condition" "body"
Example
const gcd (u v)
{
while (!= v 0) {
trans r (u:mod v)
u:= v
v:= r
}
eval u }
RESERVED OBJECTS
This chapter is a reference of the reserved objects with their respective builtin methods. The reserved objects are those objects defined in the global interpreter nameset and bind as reserved names. All literal have a string representation. The to-string method 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 Literal object is a base object for all literal object.
The sole purpose of a literal object is to provide to
methods named to-string and to-literal that return a string
representation of the literal object.
Predicate
literal-p
Inheritance
Serial
Methods
to-string
-> String (none)
The to-string method returns a string representation of the
literal. The string is expected to represent at best the
literal.
to-literal
-> String (none)
The to-literal method returns a string representation of the
literal. The string differs from the to-string method in the
sense that the string is a literal representation. For
example the literal representation of a string is the quoted
string.
Nameable
The Nameable object is a base object that support name
definition. The sole purpose of a literal object is to
provide to method named get-name that returns the object
name.
Predicate
nameable-p
Inheritance
Object
Methods
get-name
-> String (none)
The get-name method 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 InputFile is a
nameable class and the name is the file name.
Collectable
The Collectable object 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 release method 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 Item reserved 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-enum method returns the enumeration object bound to
the item. The item must be a dynamic item or an exception is
thrown.
Boolean
The Boolean reserved 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 Boolean type is primarily used for test expression.
Predicate
boolean-p
Inheritance
Literal
Constructors
Boolean
(none)
The Boolean constructor create a boolean object those
default value is false.
Boolean
(Boolean)
The Boolean constructor create a boolean object with the
boolean object argument.
Boolean
(String)
The Boolean constructor 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 Number reserved objectis a base class for all number
objects. The number base object is used by the Integer, Real
and Relatif objects. The class provides essentially the
methods needed to format a number.
Predicate
number-p
Inheritance
Literal
Methods
format ->
String (none|Integer)
The format method 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-hexa method returns a signed hexadecimal
representation of a number. This method works well with
Integer and Relatif objects.
to-hexa-string
-> String (none)
The to-hexa-string method returns a hexadecimal
representation of a number without a prefix. The number is
always considered positive. This method works well with
Integer and Relatif objects.
Integer
The Integer reserved 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 Integer
object is a literal object derived from the Number
object.
Predicate
integer-p
Inheritance
Number
Constructors
Integer
(none)
The Integer constructor create an integer object those
default value is 0.
Integer
(Real)
The Integer constructor create an integer object with the
real object argument those value is truncated to an integer
value.
Integer
(Integer)
The Integer constructor create an integer object with the
integer object argument.
Integer
(Character)
The Integer constructor 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 or method returns the binary or between the integer and
the integer argument.
abs ->
Integer (none)
The abs method returns the absolute value of the calling
integer instance.
not ->
Integer (none)
The not method returns the binary negation of the calling
integer instance.
shl ->
Integer (Integer)
The shl method returns a new integer corresponding to the
calling integer instance shifted left by the integer
argument.
shr ->
Integer (Integer)
The shr method returns a new integer corresponding to the
calling integer instance shifted right by the integer
argument.
and ->
Integer (Integer)
The and method returns a new integer corresponding to the
binary and between the calling integer instance and the
integer argument.
xor ->
Integer (Integer)
The xor method returns a new integer corresponding to the
binary xor between the calling integer instance and the
integer argument.
mod ->
Integer (Integer)
The mod method returns the modulo between the integer
instance and the integer argument. A type-error exception is
raised if the argument is not an argument.
odd-p ->
Boolean (none)
The odd-p method returns true if the integer instance is
odd, false otherwise.
even-p ->
Boolean (none)
The even-p method returns true if the integer instance is
even, false otherwise.
zero-p ->
Boolean (none)
The zero-p method returns true if the integer instance is
null, false otherwise.
Relatif
The Relatif reserved 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 Integer class. The Relatif is a
literal object derived from the Number object.
Predicate
relatif-p
Inheritance
Number
Constructors
Relatif
(none)
The Relatif constructor create a relatif object those
default value is 0.
Relatif
(Real)
The Relatif constructor create an relatif object with the
real object argument those value is truncated to an integer
value.
Relatif
(Relatif)
The Relatif constructor create an relatif object with the
relatif object argument.
Relatif
(Integer)
The Relatif constructor create an relatif object with the
integer object argument.
Relatif
(Character)
The Relatif constructor 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 or method returns the binary or between the relatif and
the relatif argument.
abs ->
Relatif (none)
The abs method returns the absolute value of the calling
relatif instance.
not ->
Relatif (none)
The not method returns the binary negation of the calling
relatif instance.
shl ->
Relatif (Integer)
The shl method returns a new relatif corresponding to the
calling relatif instance shifted left by the integer
argument.
shr ->
Relatif (Integer)
The shr method 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 pow method 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 mmi method returns the multiplicative modular inverse of
the calling relatif. The argument is the modulus to use for
the inverse calculation.
and ->
Relatif (Relatif)
The and method returns a new relatif corresponding to the
binary and between the calling relatif instance and the
relatif argument.
xor ->
Relatif (Relatif)
The xor method returns a new relatif corresponding to the
binary xor between the calling relatif instance and the
relatif argument.
mod ->
Relatif (Relatif|Integer)
The mod method returns the modulo between the relatif
instance and the relatif or integer argument. A type-error
exception is raised if the argument is invalid.
odd-p ->
Boolean (none)
The odd-p method returns true if the relatif instance is
odd, false otherwise.
even-p ->
Boolean (none)
The even-p method returns true if the relatif instance is
even, false otherwise.
zero-p ->
Boolean (none)
The zero-p method returns true if the relatif instance is
null, false otherwise.
get-msb
-> Integer (none)
The get-msb method 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 Real reserved 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 Real object is a
literal object derived from the Number object.
Predicate
real-p
Inheritance
Number
Constructors
Real
(none)
The Real constructor create an real object those default
value is 0.0.
Real
(Real)
The Real constructor create an real object with the real
object argument.
Real
(Integer)
The Real constructor create an real object with the integer
object argument.
Real
(Character)
The Real constructor 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-p method returns true if the calling real number
instance is not-a-number (nan).
ceiling
-> Real (none)
The ceiling method returns the ceiling of the calling real
number instance.
floor ->
Real (none)
The floor method returns the floor of the calling real
number instance.
abs ->
Real (none)
The abs method returns the absolute value of the calling
real number instance.
pow ->
Real (Real|Integer)
The pow method 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 sqrt method returns the square root of the calling real
number instance.
ln ->
Real (none)
The ln method returns the natural logarithm of the calling
real number instance.
exp ->
Real (none)
The exp method returns the exponential of the calling real
number instance.
sin ->
Real (none)
The sin method returns the sine of the calling floating
point instance. The angle is expressed in radian.
cos ->
Real (none)
The cos method returns the cosine of the calling floating
point instance. The angle is expressed in radian.
tan ->
Real (none)
The tan method returns the tangent of the calling floating
point instance. The angle is expressed in radian.
asin ->
Real (none)
The asin method returns the arc sine of the calling floating
point instance. The result is in radian.
acos ->
Real (none)
The acos method returns the arc cosine of the calling
floating point instance. The result is in radian.
atan ->
Real (none)
The atan method returns the arc tangent of the calling
floating point instance. The result is in radian.
sinh ->
Real (none)
The sinh method returns the hyperbolic sine of the calling
real number instance.
cosh ->
Real (none)
The cosh method returns the hyperbolic cosine of the calling
real number instance.
tanh ->
Real (none)
The atan method returns the hyperbolic tangent of the
calling real number instance.
asinh ->
Real (none)
The asinh method returns the hyperbolic arc sine of the
calling real number instance.
acosh ->
Real (none)
The acosh method returns the hyperbolic arc cosine of the
calling real number instance.
atanh ->
Real (none)
The atanh method returns the hyperbolic arc tangent of the
calling real number instance.
zero-p ->
Boolean (none)
The zero-p method returns true if the calling real instance
is null, false otherwise.
Complex
The Complex reserved object implements the behavior of a
double floating point complex type. Standard decimal dot
notation or scientific notation is used to construct complex
object from a literal with the letteri as the postfix for
the imaginary part. The Complex object is a literal object
derived from the Number object.
Predicate
complex-p
Inheritance
Number
Constructors
Complex
(none)
The Complex constructor create a complex object those
default value is 0.0+0.0i.
Complex
(Complex)
The Complex constructor create a complex object with the
complex object argument.
Complex
(Real)
The Complex constructor create a complex object with the
real object argument.
Complex
(Integer)
The Complex constructor create a complex object with the
integer object argument.
Operators
== ->
Boolean (Integer|Real|Complex)
The == operator returns true if the calling object is equal
to the integer, real or complex argument.
!= ->
Boolean (Integer|Real|Complex)
The == operator returns true if the calling object is not
equal to the integer, real or complex argument.
+ -> Real
(Integer|Real|Complex)
The + operator returns the sum of the calling complex with
an integer, a real or complex object.
- -> Real
(Integer|Real|Complex)
The - operator returns the subtraction of the calling
complex with an integer, real or complex object.
* -> Real
(Integer|Real|Complex)
The * operator returns the multiplication of the calling
complex with an integer, real or complex object.
/ -> Real
(Integer|Real|Complex)
The / operator returns the division of the calling complex
with an integer, real or complex object.
+= ->
Real (Integer|Real|Complex)
The += operator add and assign the calling complex with an
integer,real or complex argument object.
-= ->
Real (Integer|Real|Complex)
The -= operator subtracts and assign the calling complex
with an integer, real or complex argument object.
*= ->
Real (Integer|Real|Complex)
The *= operator multiply and assign the calling complex with
an integer, real or complex argument object.
/= ->
Real (Integer|Real|Complex)
The += operator divide and assign the calling complex with
an integer, real or complex argument object.
Methods
zero-p ->
Boolean (none)
The zero-p method returns true if the calling complex number
instance is null.
module ->
Real (none)
The module method returns the module of the calling complex
number instance.
square-module
-> Real (none)
The square-module method returns the square root of the of
the calling complex number instance module.
get-real-part
-> Real (none)
The get-real-part method returns the real part of the
calling complex number instance.
get-imaginary-part
-> Real (none)
The get-imaginary-part method returns the imaginary part of
the calling complex number instance.
Character
The Character reserved 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 Character class conform also with the ISO 10646
character representation.
Predicate
character-p
Inheritance
Literal
Constructors
Character
(none)
The Character constructor create a character object those
default value is the null character.
Character
(String)
The Character constructor create a character object with the
string object argument.
Character
(Integer)
The Character constructor create a character object with the
integer object argument.
Character
(Character)
The Character constructor 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-p predicate returns true if the character is a
letter character, false otherwise.
digit-p
-> Boolean (none)
The digit-p predicate returns true if the character is a
digit character, false otherwise.
alpha-p
-> Boolean (none)
The alpha-p predicate returns true if the character is an
alphanumeric character, false otherwise.
blank-p
-> Boolean (none)
The blank-p predicate returns true if the character is a
blank or tab character, false otherwise.
eol-p ->
Boolean (none)
The eol-p predicate returns true if the character is an
end-of-line character, false otherwise.
eos-p ->
Boolean (none)
The eos-p predicate returns true if the character is an
end-of-stream character, false otherwise.
nil-p ->
Boolean (none)
The nil-p predicate returns true if the character is the nil
character, false otherwise.
to-integer
-> Integer (none)
The to-integer method returns an integer representation of
the characters.
Byte
The Byte reserved object implements the behavior of an 8 bit
character type. A byte can be constructed from a integer or
from another byte. The Byte class is similar to the
Character class 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 read method for example.
Predicate
byte-p
Inheritance
Serial
Constructors
Byte
(none)
The Byte constructor create a byte object those default
value is the null byte.
Byte
(Integer)
The Byte constructor create a byte object with the integer
object argument. The integer value must be in the range of
0x00 to 0xFF.
Byte
(Byte)
The Byte constructor 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-p predicate returns true if the character is an
end-of-stream character, false otherwise.
nil-p ->
Boolean (none)
The nil-p predicate returns true if the byte is the nil
byte, false otherwise.
to-integer
-> Integer (none)
The to-integer method returns an integer representation of
the byte.
to-char
-> Character (none)
The to-char method returns a character representing the
byte.
String
The String reserved 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 String constructor create a string object those default
value is the null string.
String
(Literal)
The String constructor 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 length method returns the length of the string.
first ->
Character (none)
The first method returns the first character in the
string.
last ->
Character (none)
The last method returns the last character in the
string.
strip-left
-> String (none|String)
The strip-left method 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-right method 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 strip method 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 split method 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 extract method 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-upper converts all string characters to upper case
and returns a new string.
to-lower
-> String (none)
The to-lower method converts all string characters to lower
case and returns a new string.
get ->
Character (Integer)
The get method 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-left method 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-right method 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-left method 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-left method 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 substr method 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 strcic method compare the calling string with the
argument string in a case insensitive way.
Regex
|
The Regex object 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 Regex object. The second form is the explicit construction of the Regex object. 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. |

|
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. |

|
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. |

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 Regex constructor create a regex object those default
value is the null regex.
Regex
(String)
The Regex constructor 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 length method returns the length of the group vector
when a regex match has been successful.
get ->
String (Integer)
The get method returns by index the group sub-string when a
regex match has been successful.
match ->
String (String)
The match method returns the first matching string of the
argument string.
replace
-> String (String String)
The replace method returns a string constructed by replacing
all matching sub-string -- from the first argument -- with
the second argument string.
CONTAINER OBJECTS
This chapter is a reference of the reserved container objects with their respective builtin methods. Some of these container objects are iterable objects. When an object is iterable, an iterator constructor constructor is provided. The iterable-p predicate returns true if the container is an iterable object. The iterator method can be used to construct an object iterator. For a given iterator, the predicates end-p and valid-p can be used to check for the end or a valid iterator position. The next method move the iterator to its next position. The prev method move the iterator -- if possible -- to its previous position. The get-object method returns the object at the current iterator position.
Cons
A Cons instance or simply a cons cell is 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 car and the next cons cell is called the cdr.
Historically, car means Current Address Register and cdr
means Current Data Register. This notation is still present
here for the sake of tradition.
Predicate
cons-p
Inheritance
SerialIterableCollectable
Constructors
Cons
(none)
The Cons constructor create a default cons cell with the car
and cdr set to nil.
Cons
(Objects...)
The Cons constructor create a list of cons cells with the
object arguments. Each argument object is assigned to the
car of the cons cell while the cdr is used to link the cell
together.
Methods
get-car
-> Object (none)
The get-car method returns the car of the calling cons
cell.
get-cdr
-> Cons (none)
The get-cdr method returns the cdr of the calling cons
cell.
get-cadr
-> Object (none)
The get-cadr method returns the car of the cdr of the
calling cons cell or nil if the cdr is nil.
get-caddr
-> Object (none)
The get-caddr method 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-cadddr method 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 length method returns the length of the cons cell. The
minimum length returned is always 1.
nil-p ->
Boolean (none)
The nil-p predicate returns true if the car of the calling
cons cell is nil, false otherwise.
block-p
-> Boolean (none)
The block-p predicate returns true if the cons cell is of
type block, false otherwise.
set-car
-> Object (Object)
The set-car set the car of the calling cons cell. The object
argument is returned by the method.
set-cdr
-> Cons (Cons)
The set-cdr set the cdr of the calling cons cell. The cons
cell argument is returned by the method.
add ->
Object (Object)
The add method 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 get method returns the car of the cons cell chain at a
certain position specified by the integer index
argument.
Enum
The Enum builtin object is an enumeration object. The
enumeration is constructed with the reserved keyword enum
and a list of literals or by string name with a
constructor.
Predicate
enum-p
Inheritance
Object
Constructors
Enum
(none)
The Enum constructor create an empty enumeration.
Enum
(String...)
The Enum constructor create an enumeration from a list of
string arguments.
Methods
reset ->
none (none)
The reset method resets the enumeration and makes it
empty.
length ->
Integer (none)
The length method returns the number of items in the
enumeration.
exists-p
-> Boolean (String)
The exists-p predicate 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 add method adds a new item to the enumeration by name.
This method returns nil.
get ->
String (Integer)
The get method returns an item string representation by
index. The integer argument is the item index.
List
The List builtin object provides the facility of a
double-link list. The List object is another example of
iterable object. The List object provides support for
forward and backward iteration.
Predicate
list-p
Inheritance
Iterable
Constructors
List
(none)
The List constructor create an empty list.
List
(Object...)
The List constructor create a list from a list of object
arguments.
Methods
length ->
Integer (none)
The length method returns the length of the list. The
minimum length is 0 for an empty list.
iterator
-> Iterator (none)
The iterator returns a forward/backward iterator for this
list.
add ->
Object (Object)
The add method appends an object at the end of the list. The
object argument is returned by this method.
insert ->
Object (Object)
The insert method inserts an object at the beginning of the
list. The object argument is returned by this method.
get ->
Object (Integer)
The get method returns the object in the list at a certain
position specified by the integer index argument.
Strvec
The Strvec builtin object provides the facility of an index
array of strings. The Strvec object 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 Vector class.
Predicate
strvec-p
Inheritance
Serial
Constructors
Strvec
(none)
The Strvec constructor create an empty string vector.
Strvec
(Integer|Boolean)
The Strvec constructor 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 Strvec constructor 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 reset method resets the string vector. When the method
is complete, the string vector is empty.
length ->
Integer (none)
The length method returns the length of the string vector.
The minimum length is 0 for an empty vector.
min-length
-> Integer (none)
The min-length method returns the minimum string length of
the string vector.
max-length
-> Integer (none)
The max-length method returns the maximum string length of
the string vector.
empty-p
-> Boolean (none)
The empty-p predicate returns true if the vector is
empty.
active-p
-> Boolean (none)
The active-p predicate returns true if the vector is not
empty. This predicate is the negation of the empty-p
predicate.
get ->
String (Integer)
The get method returns the string in the vector at a certain
position specified by the integer index argument.
set ->
none (Integer String)
The set method 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 first method returns the first string in the vector.
last ->
String (none)
The last method returns the last string in the vector.
pop ->
Object (none)
The pop method removes the first element in the string
vector and returns it.
pop-last
-> String (none)
The pop-last method removes the last element in the string
vector and returns it.
find ->
Integer (String)
The find method 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 lookup method 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 add method 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-p method returns true if the string argument
exists in the vector.
remove ->
none (Integer|String)
The remove method 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-unique method 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-unique method returns the string vector unique flag
value.
concat ->
String (none | Character)
The concat method 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 nil then no separator is placed.
Vector
The Vector builtin object provides the facility of an index
array of objects. The Vector object is another example of
iterable object. The Vector object provides support for
forward and backward iteration.
Predicate
vector-p
Inheritance
SerialIterableCollectable
Constructors
Vector
(none)
The Vector constructor create an empty vector.
Vector
(Object...)
The Vector constructor create a vector from a list of object
arguments.
Methods
reset ->
none (none)
The reset method reset the vector. When the method is
complete, the vector is empty.
length ->
Integer (none)
The length method returns the length of the vector. The
minimum length is 0 for an empty vector.
empty-p
-> Boolean (none)
The empty-p predicate returns true if the vector is
empty.
get ->
Object (Integer)
The get method returns the object in the vector at a certain
position specified by the integer index argument.
set ->
Object (Integer Object)
The set method 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 first method returns the first element in the
vector.
last ->
Object (none)
The last method returns the last element in the vector.
pop ->
Object (none)
The pop method removes the first element in the vector and
returns it.
pop-last
-> Object (none)
The pop-last method removes the last element in the vector
and returns it.
find ->
Integer (Object)
The find method 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 add method 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-p method 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 clean method removes an object from the vector by index
and repack the vector.
remove ->
none (Object)
The remove method removes an object from the vector and
repack the vector. If duplicate exists in the file, only one
is removed.
HashTable
The HashTable builtin 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 HashTable constructor create an empty table.
HashTable
(Boolean)
The HashTable constructor create a table by case insensitive
flag.
HashTable
(Integer)
The HashTable constructor create a table with a specific
size.
HashTable
(Integer Boolean)
The HashTable constructor create a table by size and case
insensitive flag.
Methods
reset ->
none (none)
The reset method resets the table so that it becomes
empty.
add ->
none (String Object)
The add method 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 length returns the number of objects in the table.
empty-p
-> Boolean (none)
The empty-p predicate returns true if the table is
empty.
set-case-flag
-> none (Boolean)
The set-case-flag method sets the case insensitive flag. The
table is automatically reset when is method is called.
get-case-flag
-> Boolean (none)
The get-case-flag method returns the case insensitive
flag.
get ->
Object (String)
The get method returns the object associated with a key. If
the key is not found, nil is returned.
lookup ->
Object (String)
The lookup method returns the object associated with a key.
If the key is not found, an exception is raised.
get-key
-> String (Integer)
The get-key method 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-object method 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 Set builtin object provides the facility of a uniform
set of objects. The Set object is another example of
iterable object. The Set object provides support for forward
and backward iteration.
Predicate
set-p
Inheritance
SerialIterable
Constructors
Set
(none)
The Set constructor create an empty set.
Set
(Object...)
The Set constructor create a set from a list of object
arguments.
Methods
reset ->
none (none)
The reset method reset the set. When the method is complete,
the set is empty.
length ->
Integer (none)
The length method returns the number of elements in the set.
The minimum length is 0 for an empty set.
add ->
Object (Object)
The add method 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 get method return object by index.
empty-p
-> Boolean (Object)
The empty-p predicate returns true if the set is empty.
exists-p
-> Boolean (Object)
The exists predicate returns true if the object argument
exists in the set.
merge ->
none (Set)
The merge method merges the set argument into the calling
set. If an element already exists in the set, it is not
added.
remix ->
none (Integer)
The remix method 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 remove method 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-subset method 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.
iterator
-> Iterator (none)
The iterator returns an iterator for this set. The iterator
supports forward and backward iteration.
Queue
The Queue builtin object is a container used to push and pop
objects. The queue works like a fifo, with the notable
exception that it is blocking in push and pop.
Predicate
queue-p
Inheritance
Object
Constructors
Queue
(none)
The Queue constructor create an empty queue.
Queue
(size)
The Queue constructor create a queue by size.
Methods
push ->
none (Object)
The push pushes an object in the queue. The push method will
block if the queue is full.
pop ->
Object (none)
The pop dequeue an object in the order it was pushed. The
pop method will block if the queue is empty.
length ->
Object (none)
The length returns the number of queued objects.
empty-p
-> Boolean (none)
The empty-p method returns true if the queue is empty.
reset ->
none (none)
The reset method resets the queue.
Heap
The Heap builtin 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 Heap constructor create an empty heap. By default the
heap operates in ascending mode.
Heap
(Integer)
The Heap constructor create a heap with a specific size. By
default the heap operates in ascending mode.
Heap
(Boolean)
The Heap constructor 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 Heap constructor 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 add method 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 pop pops the first available in the heap. If the heap is
empty, an exception is raised.
length ->
Object (none)
The length returns the number of objects in the heap.
empty-p
-> Boolean (none)
The empty-p method returns true if the heap is empty.
reset ->
none (none)
The reset method reset the heap so that it becomes
empty.
get-key
-> Integer (Integer)
The get-key method 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-object method 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-mode method 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-p predicate returns true if a minimum key has
been set. The get-min-key method can be used to retrieve the
minimum key value.
max-key-p
-> Boolean (none)
The max-key-p predicate returns true if a maximum key has
been set. The get-max-key method can be used to retrieve the
maximum key value.
reset-min-key
-> none (none)
The reset-min-key method resets the minimum key flag and
value.
reset-max-key
-> none (none)
The reset-max-key method resets the maximum key flag and
value.
set-min-key
-> none (Integer)
The set-min-key method sets the minimum key value.
get-min-key
-> Integer (none)
The get-min-key method returns the minimum key value.
set-max-key
-> none (Integer)
The set-max-key method sets the maximum key value.
get-max-key
-> Integer (none)
The get-max-key method returns the maximum key value.
resize ->
none (none)
The resize method resize the heap with a new size. if the
size is lower than the number of elements, the procedure
does nothing.
Bitset
The Bitset builtin 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 BitSet constructor create an empty bitset.
Bitset
(Integer)
The Bitset constructor create a bitset those size is given
by the integer argument.
Bitset
(String)
The Bitset constructor create a bitset by parsing the string
argument. The string can be either in the normal binary form
with or without the 0b prefix or in hexadecimal form with
the 0x prefix.
Bitset
(Buffer Boolean)
The Bitset constructor 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 reset method reset the bitset and force the initial size
to 0.
marked-p
-> Boolean (Integer)
The marked-p predicate returns true if the bit is set at the
index argument.
clear ->
none (Integer)
The clear method clears a bit by the index argument.
mark ->
none (Integer)
The mark method marks a bit by the index argument.
mark ->
none (Integer Boolean)
The mark method set the bit value by the index argument with
the boolean second argument.
add ->
none (Integer Boolean)
The add method 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 set method 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 clamp method 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 length method returns the length of the bitset in
bits.
to-byte
-> Integer (Byte)
The to-byte method 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 subset method returns a sub bitset by size.
subset ->
Integer Integer (Bitset)
The subset method 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 Buffer builtin 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 Buffer constructor create an empty buffer. The buffer is
configured to operate in resize mode.
Buffer
(Literal...)
The Buffer constructor 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 add method 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 get method returns the next available byte in the buffer
but do not remove it.
read ->
Byte (none)
The read method returns the next available character and
remove it from the buffer.
reset ->
none (none)
The reset method reset the entire buffer and destroy its
contents.
length ->
Integer (none)
The length method returns the length of the buffer.
full-p ->
Boolean (none)
The full-p predicate return true if the buffer is full. If
the buffer is re-sizeable, the method always return
false.
empty-p
-> Boolean (none)
The empty-p predicate return true if the buffer is
empty.
resize-p
-> Boolean (none)
The resize-p predicate return true if the buffer is
re-sizeable.
to-string
-> String (none)
The to-string method returns a string representation of the
buffer.
format ->
String (none)
The format method returns an octet string representation of
the buffer.
pushback
-> Integer (Byte|Literal|Buffer)
The pushback method 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-word method 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-quad method 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-octa method 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-resize method set the resize flag for a particular
buffer. This method can be used at any time.
shl ->
none (Integer)
The shl method shift left the buffer by a certain number of
characters. The integer argument is the number of characters
to shift.
BlockBuffer
The BlockBuffer builtin 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 BlockBuffer constructor create a non-resizable empty
block buffer.
BlockBuffer
(Integer)
The BlockBuffer constructor create a non-resizable block
buffer. The integer argument is the block buffer size.
Methods
read-count
-> Integer (none)
The read-count method 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-count method returns the number of characters
writen into the buffer.
copy ->
Integer (String|Buffer|InputStream|OutputStream)
The copy method 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-stream method copies an input stream into the
block buffer. This method is similar to the copy method
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-stream method copies an output stream into
the block buffer. This method is similar to the copy method
except that it operates only with an output stream. Such
method is usefull when using object that implements multiple
stream types.
Property
The Property builtin 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 Property constructor create an empty property.
Property
(String)
The Property constructor create a property by name. The
first argument is the property name.
Property
(String Literal)
The Property constructor 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 Property constructor 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 set method 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-name method sets the property name.
get-name
-> String (none)
The get-name method returns the property name.
set-info
-> none (String)
The set-info method sets the property information.
get-info
-> String (none)
The get-info method returns the property information.
set-value
-> none (Literal)
The set-value method sets the property value. The literal
argument is converted to its string representation.
get-value
-> String (none)
The get-value method returns the property string value.
get-boolean-value
-> Boolean (none)
The get-boolean-value method returns the property boolean
value.
get-integer-value
-> Integer (none)
The get-integer-value method returns the property integer
value.
get-real-value
-> Real (none)
The get-real-value method returns the property real
value.
Plist
The Plist builtin 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 Plist constructor create an empty property list.
Plist
(Boolean)
The Plist constructor create a property list with a case
flag.
Plist
(String)
The Plist constructor create a property list by name.
Plist
(String String)
The Plist constructor create a property list by name and
info.
Methods
set-name
-> none (String)
The set-name method sets the property list name.
set-info
-> none (String)
The set-info method sets the property list info.
get-info
-> String (none)
The get-info method returns the property list info.
add ->
none (Property | String Literal | String String Literal)
The add method 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 set method 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 get method returns a property by index.
reset ->
none (none)
The reset method resets the property lists
empty-p
-> Boolean (none)
The emptyp- predicate returns true if the property list is
empty.
length ->
Integer (none)
The length method returns the number of properties in the
property list.
exists-p
-> Boolean (String)
The exists-p method returns true if a property exists. The
string argument is the property name.
find ->
Property (String)
The find method 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 lookup method 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-value method 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-table method converts the property list into a
print table. The print table can be formated with the
property info and value. In the first form, the print table
is formated without the info field in normal value. In the
second form, the boolean flag controls whther or not the
info field is added in the table. In the third form, the
second boolean value controls whther or not the real
property value are converted in scientific notation.
SPECIAL OBJECTS
This chapter is a reference of the reserved special objects with their respective built-in methods. Special objects are those objects which interact with the interpreter.
Object
The base object Object provides several methods which are
common to all objects.
Methods
repr ->
String (none)
The repr method returns the object name in the form of a
string. The result string is called the representation
string.
rdlock ->
none (none)
The rdlock method 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 wrlock method 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 unlock method 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 clone method returns a clone of the calling object. If
the object cannot be cloned, an exception is raised.
Interp
The Interp is 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
interp reserved symbol.
Predicate
interp-p
Inheritance
Runnable
Constants
argv
The argv data 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-name data member holds the operating system name. The
data member evaluates as a string.
os-type
The os-type data member holds the operating system type. The
data member evaluates as a string.
version
The version data member holds the full engine version. The
data member evaluates as a string.
program-name
The program-name data member holds the interpreter program
name. The data member evaluates as a string.
major-version
The major-version data member holds the interpreter major
revision number. The data member evaluates as an
integer.
minor-version
The minor-version data member holds the interpreter minor
revision number. The data member evaluates as an
integer.
patch-version
The patch-version data member holds the interpreter patch
revision number. The data member evaluates as an
integer.
afnix-uri
The afnix-uri data member holds the official uri. The data
member evaluates as a string.
machine-size
The machine-size data 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 loader data member holds the interpreter library loader.
Under normal circumstances, the library loader should not be
used and the standard interp:library form should be
used.
resolver
The resolver data 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|String Boolean|String String Boolean)
The load method opens a module those name is the argument
and executes each form in the module by doing a read-eval
loop. When all forms have been executed, the module is
closed and the method returns true. In case of exception,
the module is closed and the method returns false. In the
first form the module is loaded by name only once. In the
second form, the module is loaded with a force flag set to
true. In the third form, the module is given a tag which is
used to detect whether or not the module has been loaded. If
no tag is given, the module name is used instead.
library
-> Library (String)
The library method opens a shared library and a returns a
shared library object.
launch ->
Thread (form|thread form)
The launch method 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 dameon method 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-epsilon method sets the interpreter epsilon which
corresponds to the real precision. The real precision is
used by the ?= operator to compare real values.
get-epsilon
-> Real (none)
The get-real precision method returns the interpreter
epsilon which correspond to the real precision. The
real-precision is used by the ?= operator to compare real
values.
dup ->
Interp (none|Terminal)
The dup method 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 loop method 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-prompt method sets the interpreter terminal
primary prompt which is used during the interpreter main
loop.
set-secondary-prompt
-> none (String)
The set-secondary-prompt method sets the interpreter
terminal secondary prompt which is used during the
interpreter main loop.
get-primary-prompt
-> String (none)
The get-primary-prompt method returns the interpreter
terminal primary prompt.
get-secondary-prompt
-> String (none)
The get-secondary-prompt method returns the interpreter
terminal secondary prompt.
read-line
-> String (none|Boolean)
The read-line method 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-passphrase method 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 Thread object is a special object which acts as a thread
descriptor. Such object is created with the launch reserved
keyword.
Predicate
thread-p
Inheritance
Object
Constructors
Thread
(none)
The Thread constructor create a default thread object
without any form bound to it. The object can be later used
with the launch command.
Methods
end-p ->
none (none)
The end-p predicate returns true if the thread argument has
finished. This predicate indicates that the thread result is
a valid one.
wait ->
none (none)
The wait method suspends the calling thread until the thread
argument as completed. The wait method is the primary
mechanism to detect a thread completion.
result ->
Object (none)
The result method returns the thread result. If the thread
is not completed, the nil value is returned. However, this
method should not be used to check if a thread has completed
and the wait method must be used because a thread result
might be nil.
Condvar
The condition variable Condvar object 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 Condvar constructor creates a default condition
variable.
Methods
lock ->
none (none)
The lock method 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 mark method marks the condition variable and notify all
pending threads of such change. The mark method is the basic
notification mechanism.
wait ->
none (none)
The wait method 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 reset method 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 unlock method unlock the condition variable mutex. This
method should be used after a call to lock or wait.
wait-unlock
-> none (none)
The wait-unlock method 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 Lexical object 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 map method.
Predicate
lexical-p
Inheritance
Literal
Constructors
Lexical
(none)
The Lexical constructor create an empty lexical object which
evaluates to nil.
Lexical
(String)
The Lexical constructor create a lexical object using the
string argument as the lexical name.
Methods
map ->
Object (none)
The map method 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 Qualified object 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 map
method can be used to retrieve the symbol associated with
that name.
Predicate
qualified-p
Inheritance
Literal
Constructors
Qualified
(none)
The Qualifed constructor create an empty qualified name
object which evaluates to nil.
Qualified
(String)
The Qualified constructor 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 map method 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 Symbol object 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 flag and 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 Symbol constructor create a symbol by name. The
associated object is marked as nil.
Symbol
(String Object)
The Symbol constructor create a symbol by name and bind the
object argument to the symbol.
Methods
get-const
-> Boolean (none)
The get-const method returns the symbol const flag. If the
flag is true, the symbol object cannot be changed unless
that flags is reset with the set-const method.
set-const
-> none (Boolean)
The set-const method 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-object method returns the symbol object.
set-object
-> none (Object)
The set-object method set the symbol object. The object can
be obtained by evaluating the symbol.
Closure
The Closure object 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-p returns 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-argument and
set-form method. An empty closure can be defined at
construction as well.
Predicate
closure-p
Inheritance
Object
Constructors
Closure
(none)
The Closure constructor 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 self is automatically bounded for this
closure.
Closure
(Boolean)
The Closure constructor 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-p predicate returns true if the closure is a gamma
expression. The predicate returns true for a lambda
expression.
lambda-p
-> Boolean (none)
The lambda-p predicate returns true if the closure is a
lambda expression. The predicate returns false for a gamma
expression.
get-form
-> Object (none)
The get-form method returns the closure form object.
set-form
-> none (Object)
The set-form method sets the closure form object.
add-argument
-> none (String|Lexical|form)
The add-argument method 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 Librarian object 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 Librarian constructor creates a librarian for writing.
Initially, the librarian is empty and files must be added
with the add method.
Librarian
(String)
The Librarian constructor creates a librarian for reading
using the name as the librarian file name.
Methods
add ->
none (String)
The add method adds a file into the librarian. The librarian
must have been opened in write mode.
write ->
none (String)
The write method writes a librarian to a file those name is
the argument.
length ->
Integer (none)
The length method 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-p predicate returns true if the file argument
exists in the librarian.
extract
-> InputMapped (String)
The extract method returns an input stream mapped to the
file name argument.
Resolver
The Resolver object 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 Resolver constructor creates a default resolver. Once
created, the add method can be used to add path to the
resolver.
Methods
add ->
none (String)
The add method adds a path into the resolver. The path can
points either to a directory or a librarian.
lookup ->
InputStream (String)
The lookup method resolves the file name argument and
returns an input stream for that file.
to-string
-> String (String)
The to-string method resolves the file name argument and
returns a string respresentation for that file.
valid-p
-> Boolean (String)
The valid-p predicate returns true if the file name argument
can be resolved. If the file name can be resolved, the
lookup method 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 add method.
Specific table element can be set with the set method. The
class provide a format method 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-size method, 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-p method can be used to
test for the presence of a tag, while the set-tag and
get-tag methods can be used to set or get the tag by row and
column coordinates.
Predicate
print-table-p
Inheritance
Object
Constructors
PrintTable
(none)
The PrintTable constructor creates a default table with one
column.
PrintTable
(Integer)
The PrintTable constructor creates a table with a
pre-defined number of columns specified in the constructor
argument.
PrintTable
(Integer Integer)
The PrintTable constructor creates a table with a
pre-defined number of columns and rows specified in the
constructor arguments.
Methods
head-p ->
Boolean (none)
The head-p predicate returns true if the table header is
defined.
add-head
-> none ([String+])
The add-head method 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-head method returns a table header element by column
index. The integer argument is the header row index.
set-head
-> none (Integer String)
The set-head method 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 add method 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 set method 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 get method 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 set method 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-p predicate 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-tag method 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-tag method 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 dump method 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 merge method 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 format method 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-rows method returns the number of rows in the
table.
add-columns
-> Integer (none)
The add-columns method adds 1 or more columns at the end of
the table.
get-columns
-> Integer (none)
The get-columns method returns the number of columns in the
table.
set-column-size
-> none (Integer Integer)
The set-column-size method 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-size method returns the desired width for a
particular column.
set-column-fill
-> none (Integer Character)
The set-column-fill method 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-fill method returns the filling character for
a particular column.
set-column-direction
-> none (Integer Boolean)
The set-column-direction method 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-direction method 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 Logger constructor creates a default logger.
Logger
(Integer)
The Logger constructor creates a logger with a specific size
specified as the constructor argument.
Logger
(String)
The Logger constructor creates a logger with an information
argument. The information string is later used to format the
logged messages.
Logger
(Integer String)
The Logger constructor 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 add method 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 reset method reset the logger class by removing all
messages.
length ->
Integer (none)
The length method returns the number of messages stored in
the logger object.
resize ->
none (Integer)
The resize method 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-info method 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-info method 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-level method sets the default level use for
storing message. This parameter is used with the add method
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-level method returns the default message
level used by the logger. The default message level is used
by the add method when the message level is not specified
directly.
get-message
-> String (Integer)
The get-message method returns a logger message by index.
The integer argument is the message index.
get-full-message
-> String (Integer)
The get-full-message method 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-time method returns the logger message time
by index. The integer argument is the message index.
get-message-level
-> Integer (Integer)
The get-message-level method returns the logger message
level by index. The integer argument is the message
index.
set-output-stream
-> none (OutputStream|String)
The set-output-stream method 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 Counter constructor creates a default counter. Since,
both start and end values are initialized to 0, this object
will never count.
Counter
(Integer)
The Counter constructor 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 Counter constructor 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 reset method reset the counter to its start value.
step-p ->
Boolean (none)
The step-p predicate 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-p predicate returns true if the counter can be
moved by one position.
Lexer
The Lexer class 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-token method returns the next available token.
get-object
-> Object (none)
The get-object method returns the next available object.
get-line-number
-> Integer (none)
The get-line-number method returns the token line number
which is the current line number under processing.
Former
The Former class is an abstract class used to derive form
reader. The class defines only a method parse which returns
a form. The method getlnum returns the form line number.
Predicate
former-p
Inheritance
Object
Methods
parse ->
Form (none)
The parse method returns the next available form.
get-line-number
-> Integer (none)
The get-line-number method returns the form line number
which is the current line number under processing.
Reader
The Reader class 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 Reader constructor creates a default reader.
Reader
(String|InputStream)
The Reader constructor 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 Loader class 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:loader to access
the interpreter loader. for safety reason, it is not
possible to add a libray to the loader. The interpreter
method interp:library is the prefered method to access the
loader.
Predicate
loader-p
Inheritance
Object
Methods
length ->
Integer (none)
The length method returns the number of loaded
libraries.
get ->
Library (Integer)
The get method returns a library object by index.
exists-p
-> Boolean (String)
The exists-p predicate returns true if a library is already
loaded in the interpreter.