aboutsummaryrefslogtreecommitdiff
path: root/neb/__init__.py
diff options
context:
space:
mode:
authormryouse2022-07-14 02:19:33 +0000
committermryouse2022-07-14 02:19:33 +0000
commit2154c4fd811c5669c217593250476dda860aac36 (patch)
tree763d9fcda6a8a9ce23c45b2ffa4e28f688376b57 /neb/__init__.py
parent00c5c7e2c043949ee8b3d6c32b01d338102da51f (diff)
bugfix: let things that aren't symbols be called
Diffstat (limited to 'neb/__init__.py')
-rw-r--r--neb/__init__.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/neb/__init__.py b/neb/__init__.py
index e3167b9..e93f0dd 100644
--- a/neb/__init__.py
+++ b/neb/__init__.py
@@ -41,7 +41,14 @@ def evaluate(expr, env, ns=None):
elif len(expr.args) == 0:
return expr
- if not isinstance(expr.args[0], Symbol):
+ elif isinstance(expr.args[0], Expr):
+ ev = evaluate(expr.args[0], env, ns)
+ return evaluate(Expr([ev] + expr.args[1:]), env, ns)
+
+ elif isinstance(expr.args[0], Callable):
+ return expr.args[0].call(expr, env, ns)
+
+ elif not isinstance(expr.args[0], Symbol):
raise NebPanic("can't evaluate without a symbol")
name = expr.args[0].name
if env.contains(name):