Skip to content

Latest commit

 

History

History

lispy

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

Norvig's originals and updates

This directory contains:

  • original/: Norvig's lis.py, lispy.py, and the lispytest.py custom test script for testing both;
  • py3.10/: lis.py with type hints, pattern matching, and minor edits—requires Python 3.10.

The py3.10/ directory also has lis_test.py to run with pytest, including the lis_tests suite from original/lispytest.py, and additional separate tests for each expression and special form handled by evaluate.

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.

Changes to Norvig's code

I made small changes to the programs in original/:

  • In lis.py:

    • The Procedure class accepts a list of expressions as the body, and __call__ evaluates those expressions in order, and returns the value of the last. This is consistent with Scheme's lambda syntax and provided a useful example for pattern matching.
    • In the elif block for 'lambda', I added the * in front of the *body variable in the tuple unpacking to capture the expressions as a list, before calling the Procedure constructor.
  • In lispy.py I made changes and a pull request to make it run on Python 3.

Luciano Ramalho
June 29, 2021