diff options
| author | mryouse | 2022-07-07 02:16:54 +0000 | 
|---|---|---|
| committer | mryouse | 2022-07-07 02:16:54 +0000 | 
| commit | 5716911ede71261177073ca57fd139641149ace0 (patch) | |
| tree | 5f67da80c460c483f86c0b865034f80d7ac06a37 /neb/__init__.py | |
| parent | f4622e734ef2be1c3793113e93219d593e3e11fb (diff) | |
refactor: add a higher level of Callable
Diffstat (limited to 'neb/__init__.py')
| -rw-r--r-- | neb/__init__.py | 17 | 
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): | 
