Mixing Lisps in Kawa

Per Bothner

What Is Kawa?

Why multiple languages?

Kawa Lisp languages

Other Kawa languages

Execution

  1. Read/parse source code, yielding internal Expression data structure.
  2. Tree-walk the Expression for analysis, optimimization, and selecting representations.
  3. If immediate mode and tree is simple: interpret it.
  4. Else, code generation: Create one or more Java classes with byte-code instructions.
  5. Load-and-execute generated code, or save for future use.

Lisp reading

Values and Objects

Symbols

Sequences

The Nil problem

Streams

Multiple values

Functions

Defining classes

Modules

Types

Type declarations

(define (double-abs (x :: <double>))
    :: <double>
  (if (> x 0) x (- x)))

Exceptions

Development: Editing and debugging

Scheme status

Emacs Lisp and JEmacs status

Common Lisp status

Final words