From 5716911ede71261177073ca57fd139641149ace0 Mon Sep 17 00:00:00 2001 From: mryouse Date: Thu, 7 Jul 2022 02:16:54 +0000 Subject: refactor: add a higher level of Callable --- neb/__init__.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'neb/__init__.py') diff --git a/neb/__init__.py b/neb/__init__.py index dd7245a..76d5775 100644 --- a/neb/__init__.py +++ b/neb/__init__.py @@ -38,7 +38,8 @@ def evaluate(expr, env, ns=None): else: raise InterpretPanic(expr.args[0], "unable to evaluate") -class Function: + +class Callable: def __init__(self, name, params, body, args=None, many=None): self.name = name @@ -56,6 +57,18 @@ class Function: out.append(string_args(self.args, self.many)) return " ".join(out).strip() + f") => {self.return_type}" + def evaluate_args(self, symbol, params, env, ns): + pass + + def call(self, expr, env): + pass + + +class Function(Callable): + + def __init__(self, name, params, body, args=None, many=None): + super().__init__(name, params, body, args, many) + def arity_check(self, symbol, params): min_arity = len([a for a in self.args if not a.optional]) max_arity = -1 if self.many is not None else len(self.args) @@ -92,8 +105,6 @@ class Function: ret.append(ev) return ret - def call(self, expr, env): - pass class Builtin(Function): -- cgit v1.2.3