diff options
| -rw-r--r-- | neb/interpreter.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/neb/interpreter.py b/neb/interpreter.py index a80f5d4..7045219 100644 --- a/neb/interpreter.py +++ b/neb/interpreter.py @@ -74,6 +74,9 @@ class Builtin(Function): def __init__(self, callable_, args=None, many=None): super().__init__("<builtin>", None, callable_, args, many) + def __str__(self): + return f"builtin function {self.name}" + def call(self, expr, env, ns): self.arity_check(expr.args[0], expr.args[1:]) evaluated_args = self.evaluate_args(expr.args[0], expr.args[1:], env, ns) @@ -86,6 +89,17 @@ class UserFunction(Function): newparams, args, many = self.process_params(name, params) super().__init__(name, newparams, body, args, many) + def __str__(self): + out = f"(func {self.name} (" + args_list = [f"{a.name} {a.type_}" for a in self.args] + if self.many: + args_list.append(f"{self.many.name} {self.many.type_}") + out = out + " ".join(args_list) + ") " + for expr in self.body: + out = out + f"{expr} " + return out.strip() + ")" + + def process_params(self, name, params): newparams = [] args = [] |
