What is ISLisp ?
At the first stage, ISLisp was developed to be a
subset of Common Lisp, succeeding the fundamental language
features developed in Common Lisp and at the same time
reflecting the compact specification and syntax of Scheme.
As a Lisp language, ISLisp has the following features;
compact language specification and efficient execution
performance, efficient object system,
separation of language specification and processor specification,
and integration of data type into object system.
Package or module function is not included in ISLisp
standard at the moment, although study work on the
feature was done.
Package function, which avoids name collision, is
required in developments of large scale software and
is a future challenge.
Features of ISLisp
At first, ISLisp started its development targeting at
a compact and consistent subset of Common Lisp
considering EuLisp and Scheme.
- ● Lexical principle and clear distinction of dynamic variable
-
ISLisp supports lexical principle as Common Lisp does.
Similarly, ISLisp supports dynamic variables, but in different ways from Common Lisp.
In ISLisp, a dynamic variable is declared by defdynamic or dynamic-let ,
and reference to the value of a dynamic variable var is done explicitly by (dynamic var).
Dynamic variable has a distinguish name space.
- ●Compact language Specification and Efficient execution
-
To avoid huge language specifications of Common Lisp, ISLisp simplifies fundamental language
features including basic data class and also several peripheral language features such as pretty printing
are reduced.
For fundamental data classes, complex number, rational number, hash table, random state and others were removed.
- ● Integration of Data Type into Object System
-
In Common Lisp, object system was introduced after classical data type system and the two systems are mixed.
In ISLisp, every data type is integrated as a class in object system.
- ● Efficientt Object System
-
CLOS, object system of Common Lisp, has very advanced functionalities such as
MOP(Meta Object Protcol), but which introduced the problems of huge specifications and
execution inefficiency.
In ISLisp, class C is a subclass of class C1 and class C2
if and only if the super classes of C1 and the superclasses of C2 has
only <standard-object > or < object > in common.
This restriction on multiple inheritances allows efficient implementations of
object system.
- ●
Separation of Language specification and processor specification
-
In traditional Lisp systems, there are many cases such that language specifications and processor
specifications are mixed in.
In ISLisp, language specifications are separated from processor specifications.
ISLisp forms after macro expansion and other pre-processing are called
"prepared form" and ISLisp does not define preparation procedures.