aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormryouse2022-07-07 02:16:54 +0000
committermryouse2022-07-07 02:16:54 +0000
commit5716911ede71261177073ca57fd139641149ace0 (patch)
tree5f67da80c460c483f86c0b865034f80d7ac06a37
parentf4622e734ef2be1c3793113e93219d593e3e11fb (diff)
refactor: add a higher level of Callable
-rw-r--r--neb/__init__.py17
1 files changed, 14 insertions, 3 deletions
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):