aboutsummaryrefslogtreecommitdiff
path: root/neb/interpreter.py
diff options
context:
space:
mode:
Diffstat (limited to 'neb/interpreter.py')
-rw-r--r--neb/interpreter.py14
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 = []