Programming Language ISLISP


Q. What does ISLISP stand for?

A. Nothing.

At the request of John McCarthy, Lisp’s creator, no single language that is a member of the Lisp family is to be intended to be the definitive dialect; that is, none is to be called just “LISP.” Consequently, ISLISP does not mean “this IS LISP” nor does it mean “International Standard for LISP.” (There is an international standard for ISLISP, but there is not an international standard for LISP.) ISLISP is just a name the WG16 committee made up one day for want of a better name.

Q. How is ISLISP related to Common Lisp?

A. ISLISP is what Kent Pitman has sometimes called “culturally compatible” with Common Lisp, in the sense that it doesn’t introduce any concepts or data structures or classes that are greatly at odds with what Common Lisp uses. A compatibility package for ISLISP could be written entirely in portable Common Lisp. (Kent Pitman has done this privately to make sure it was possible; contact him for details.)

ISLISP is not a subset of Common Lisp in the sense of being able to run a subset of code offered by Common Lisp. Conceptually, however, it is like a subset in that it offers what is largely a subset of Common Lisp’s functionality.

The Common Lisp specification is about 1150 pages in hardcopy. The ISLISP specification is about a tenth the size of that, and the functionality it offers is correspondingly less. Text pages are only a rough metric of the capability, of course. But the ISLISP specification is small enough that you might prefer to simply browse it to find out what’s in it. To do that, see the “Specification” page at this site.

ISLISP has an object system, ILOS, that is largely a subset of the CLOS functionality.

ISLISP is a Lisp2 in the sense that it has separated value and function namespaces.

Q. How is ISLISP related to Scheme and Eulisp?

A. Among the ISLISP designers were a number of Scheme and Eulisp users who wanted a more modular core than they felt Common Lisp provided. The smaller, simpler design of ISLISP’s core is more quickly implemented. ISLISP’s small size may also make it, for some, a useful teaching tool.

Q. How is ISLISP related to ILISP?

A. It’s not really related, other than vaguely because they are both Lisp facilities. ILISP is an interface between Lisp and GNU-Emacs.

Depending on which version of Emacs you have, you can probably run Lisp inferior to Emacs by setting Emacs’s inferior-lisp-program variable to the appropriate bin file. For an example, see the information pages about Eligis OpenLisp, including a sample Emacs init file. You might also need to do additional environmental setup related to the dialect of Lisp; for example, OpenLisp probably wants you to do:
(setenv "OPENLISP" "youropenlispdir")

Also, a Macintosh user of OpenLisp under Emacs warns us:

“You also need the following line in your .emacs (at least on Mac OS X):

  (setq process-connection-type t)

It says to use ptys rather than pipes for subprocesses. Not having this line breaks a surprising amount of stuff. I think it should really be the default, but it’s not.”

If you’ve got additional information that belongs here, send mail to the administrator.

Q. Does ISLISP have a module system?

A. No. This was something the design committee wanted to do but didn’t have time and resources to do on the first pass. It was left for future work.

Q. Does ISLISP have a class system?

A. Yes. Although not an actual subset of CLOS (the Common Lisp Object System), ILOS (The ISLISP Object System) feels very much like a subset of CLOS.

Q. Where can I download the ISLISP specification?

A. Visit the “Specification” page at this site.

Q. Where can I get a list of ISLISP implementations?

A. Visit the “Implementation” page at this site for the implementations we know about.

If you know of implementations not mentioned there, send mail to the administrator.