A user-defined Scheme procedure.
| 13 | Number = (int, float) # A Lisp Number is implemented as a Python int or float |
| 14 | |
| 15 | class Procedure(object): |
| 16 | "A user-defined Scheme procedure." |
| 17 | def __init__(self, parms, body, env): |
| 18 | self.parms, self.body, self.env = parms, body, env |
| 19 | def __call__(self, *args): |
| 20 | env = Environment(dict(zip(self.parms, args)), self.env) |
| 21 | return eval(self.body, env) |
| 22 | |
| 23 | ################ Global Environment |
| 24 |