Mixing Lisps in Kawa

Per Bothner

<per@bothner.com>

Presented June 22, 2005, at the 2005 International Lisp Conference, in Stanford, California.

Abstract

Kawa started as a Scheme implementation written in Java, based on compiling Scheme forms to Java byte-codes. It has developed into a powerful Scheme dialect whose strengths include speed and easy access to Java classes. It is Free Software that some companies depend on.

The Kawa compiler and run-time environment have been generalized to implement other languages besides Scheme, both in the Lisp family (Emacs Lisp, Common Lisp, and BRL), and outside it (XQuery, Nice). This paper focus on the differences and challenges of implementing Common Lisp (not usable yet) and Emacs Lisp, which supports the JEmacs editor.

Paper Slides

PDF,
HTML,
Docbook/XML source.

HTML (slideshow),
HTML (outline).

1. Introduction
2. Multiple Languages
3. Execution and compilation
4. Values and Objects
5. Threads and environment
6. Symbols and Environments
7. Sequences and Arrays
8. Nil
9. Streams
9.1. Readers and read tables
9.2. Printing
10. Multiple values
11. Types
12. Functions
13. Defining new classes
14. Conditions; continuations
15. Modules
16. Emacs types
17. Editing and debugging
18. Summary
Bibliography
Mixing Lisps in Kawa
What Is Kawa?
Why multiple languages?
Kawa Lisp languages
Other Kawa languages
Execution
Lisp reading
Values and Objects
Symbols
Sequences
The Nil problem
Streams
Multiple values
Functions
Defining classes
Modules
Types
Type declarations
Exceptions
Development: Editing and debugging
Scheme status
Emacs Lisp and JEmacs status
Common Lisp status
Final words