.. | ||
original | ||
py3.9 | ||
py3.10 | ||
LICENSE | ||
README.md |
Norvig’s originals and updates
This directory contains:
original/
: Norvig’slis.py
,lispy.py
, and thelispytest.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 thebody
, and__call__
evaluates those expressions in order, and returns the value of the last. This is consistent with Scheme’slambda
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 theProcedure
constructor.
- The
- In
lispy.py
I made changes and a pull request to make it run on Python 3.
Luciano Ramalho
June 29, 2021