Basic Specs of Viivi kernel
-
Uniquely designed and implemented
with no references at all to the internals of other implementations.
-
Being written with Pure Java,
it is expected to run similarly on any kinds of platform equipped with a JVM,
only if memory storage is large enough.
Supplementary Scheme programs are not required.
-
Fully supports the features defined in R5RS,
including multiple generations and restarts of continuations.
-
All the numerical types defined in R5RS
(integers of unlimited length,
rational numbers,
floating point numbers [64-bit precision],
and complex numbers)
are supported.
-
Numerical calculations are performed as exactly as possible.
(e.g.,
when both the real and the imaginary parts of the given complex numbers are all rational,
then arithmetic calculations are performed keeping both the parts rational;
when all the complex numbers are given in the polar format,
then multiplications and divisions are performed in the form of polar format
[without being expanded into Descartes format])
[Updated on 2022/03/02]
This feature seems to disagree with the conventional interpretation for R5RS that
"the real and imaginary parts, the absolute value, and the argument of a complex number
should be implemented with floating-point numbers".
And hence it will be changed in the near future.
-
The arguments for
scheme-report-environment
and null-environment
must have the value of 5
.
Namely, only R5RS is currently supported.
Older or newer versions, such as R4RS or R6RS, are not supported.
-
Arguments (to be evaluated) for procedure calls
are always evaluated from left to right.
-
Capital and small letters are distinguished in symbols.
-
Square brackets
[...]
and #[...]
in addition to
parentheses (...)
and #(...)
can be used
to express pairs and vectors, respectively.
They are unified into (...)
and #(...)
after they are read by the interpreter.
-
Display style of pairs and vectors follows SRFI-38.
-
Since the implementation does not depend on the internal structure of the JVM
but uses only the basic Java APIs and the exception handling,
it must be easily transplanted into other Object-Oriented platforms.
Contact
Exhibited on 2010/10/24
Updated on 2022/03/02
Copyright(C) 2003-2022 ilma <ilma@viivi.io> All rights reserved.