A user-defined Scheme procedure.
| 170 | |
| 171 | |
| 172 | class Procedure: |
| 173 | "A user-defined Scheme procedure." |
| 174 | |
| 175 | def __init__( |
| 176 | self, parms: list[Symbol], body: list[Expression], env: Environment |
| 177 | ): |
| 178 | self.parms = parms |
| 179 | self.body = body |
| 180 | self.env = env |
| 181 | |
| 182 | def __call__(self, *args: Expression) -> Any: |
| 183 | local_env = dict(zip(self.parms, args)) |
| 184 | env = Environment(local_env, self.env) |
| 185 | for exp in self.body: |
| 186 | result = evaluate(exp, env) |
| 187 | return result |
| 188 | |
| 189 | |
| 190 | ################ command-line interface |