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
.
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.
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