[Historical note: I recently found this 8-year old code hidden in the attic. Some readers might find it useful as an example of (1) 40,000 lines of code in the Dylan language (almost), or (2) the powerful pretty-printing capabilities in Common Lisp. Not many people appreciate that you can produce nicely formatted output so easily -- here I produce Dylan code with nice indentation, to any specified column width, just by converting Lisp to a parse-tree syntax that is equivalent to Dylan, and then writing pretty-print directives for the parse-trees. All the rest is handled automatically.

As I told swm, haahr, and jrb, finding this old code made me feel like Dorothy waking up from her dream: "And you were in it, and you, and you. Some of it was beautiful, but most of it ..." well, most of it didn't turn out the way we hoped back in 1994-95. -Peter Norvig]

# Converting Common Lisp to Dylan

This document is designed to help you convert code from Common Lisp to Dylan. The first part of the document lists problems to look out for; the second part documents a Common Lisp program called LTD (for Lisp To Dylan) that helps to automate the conversion.

## Pitfalls for Lisp to Dylan Conversion

- NIL versus ()
- Single versus multiple namespaces
- Special (dynamic) variables
- Optional arguments
- EVAL and string-to-symbol-to-value coercion
- Macros
- Lexical conventions for symbols, etc.
- Numbers
- Packages versus modules
- CLOS method combination
- Functions with different names
- Functions with similar (but different) semantics
- Functions that do not appear in Dylan

## LTD: A Lisp To Dylan Conversion Tool

- Installing LTD
- Using LTD
- Conversion options
- Inside LTD, the Lisp to Dylan converter
- Inside DPP, the Dylan Pretty-Printer
- To Do List
- Done List
- Credits

Peter Norvig