aboutsummaryrefslogtreecommitdiff
path: root/neb
diff options
context:
space:
mode:
Diffstat (limited to 'neb')
-rw-r--r--neb/interpreter.py15
1 files changed, 8 insertions, 7 deletions
diff --git a/neb/interpreter.py b/neb/interpreter.py
index 4762ae9..a80f5d4 100644
--- a/neb/interpreter.py
+++ b/neb/interpreter.py
@@ -417,6 +417,9 @@ def interpretFunc(symbol, args, env, ns):
# compose a lambda
func = interpretLambda(None, args[1:], env, ns)
+ # add the name to the function
+ func.name = name
+
env.register(name, func)
return List([])
@@ -760,13 +763,12 @@ def interpretAssert(symbol, args, env, ns):
GLOBALS.register("assert", Builtin(interpretAssert, [Arg("cond", TypeEnum.BOOL)]))
def interpretHowTo(symbol, args, env, ns):
- if not isinstance(args[0], Symbol):
- raise InterpretPanic(symbol, "expects a symbol", args[0])
- sym = env.get(args[0].name)
- print(sym.describe(args[0].name))
+ if not isinstance(args[0], Function):
+ raise InterpretPanic(symbol, "expects a :func", args[0])
+ print(args[0].describe())
return List([])
-GLOBALS.register("howto", Builtin(interpretHowTo, [Arg("symbol", TypeEnum.ANY, lazy=True)]))
+GLOBALS.register("howto", Builtin(interpretHowTo, [Arg("symbol", TypeEnum.ANY)]))
def interpretSymbols(symbol, args, env, ns):
keys = list(env.environment.keys())
@@ -848,8 +850,7 @@ def interpretIsBool(symbol, args, env, ns):
GLOBALS.register("bool?", Builtin(interpretIsBool, [Arg("arg", TypeEnum.ANY)]))
def interpretUserSymbols(symbol, args, env, ns):
- keys = [k for k,v in env.environment.items() if isinstance(v, UserFunction) or isinstance(v, Literal)]
- keys.sort()
+ keys = [Symbol(k, -1) for k,v in env.environment.items() if isinstance(v, UserFunction) or isinstance(v, Literal)]
return List(keys, True)
GLOBALS.register("user-symbols", Builtin(interpretUserSymbols, []))