Learning with lis.py
This repository contains variations of Peter Norvig's
lis.py
interpreter
for a subset of Scheme,
described in his post (How to Write a (Lisp) Interpreter (in Python)).
Provenance, Copyright and License
lis.py
is
published
in the norvig/pytudes repository on Github.
The copyright holder is Peter Norvig and the code is licensed under the
MIT license.
Unless otherwise noted, I wrote the changes and additions described in the README files in each directory.
References
Articles
- Norvig, Peter: (How to Write a (Lisp) Interpreter (in Python))
- Norvig, Peter: (An ((Even Better) Lisp) Interpreter (in Python))
- Graham, Paul: The Roots of Lisp
- Steele, Guy Lewis, Jr.; Sussman, Gerald Jay: The Art of the Interpreter, or the Modularity Complex
- McCarthy, John: Recursive functions of symbolic expressions and their computation by machine, Part I
π
Books
- Abelson, Harold; Sussman, Gerald Jay; Sussman, Julie: Structure and Interpretation of Computer Programs, Second Edition (SICP)
- Dybvig, R. Kent: The Scheme Programming Language, Fourth Edition (TSPL)
- Harvey, Brian; Wright, Matthew: Simply Scheme: Introducing Computer Science, Second Edition
- Friedman, Daniel P.; Felleisen, Matthias: The Little Schemer, Fourth Edition
π - Butterick, Mathew: Beautiful Racketβan introduction to language-oriented programming using Racket
- Felleisen, Matthias; Findler, Robert Bruce; Flatt, Matthew; Krishnamurthi, Shriram: How to Design Programs, Second Edition
- Krishnamurthi, Shriram: Programming Languages: Application and Interpretation (PLAI)
- Sperber, Michael; et. al. Revised6 Report on the Algorithmic Language Scheme (R6RS)
Interpreters and tools
- Racket: "the Language-Oriented Programming Language"
- GNU Guile: "GNU Ubiquitous Intelligent Language for Extensions"
- Chicken Scheme: "a practical and portable Scheme system"
- A Meta-Circular Interpreter for Scheme: example 12.7 from TSPL
- McCarthy's original Lisp converted to Common Lisp by Paul Graham (local copy, original download)
Luciano Ramalho
SΓ£o Paulo, August 23, 2021