Welcome to ISLisp


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.