From 0a646ac3dacafd7c266a34fb9dcab40e6e9649c1 Mon Sep 17 00:00:00 2001 From: mryouse Date: Fri, 8 Jul 2022 23:40:10 +0000 Subject: (symbols) returns all symbols, not just those in current env --- neb/std/repl.py | 2 +- neb/structs.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'neb') diff --git a/neb/std/repl.py b/neb/std/repl.py index fbb0366..ccd48bd 100644 --- a/neb/std/repl.py +++ b/neb/std/repl.py @@ -12,7 +12,7 @@ def interpretHowTo(symbol, args, env, ns): REPL.register("howto", Builtin("howto", interpretHowTo, [Arg("symbol", TypeEnum.ANY)], return_type=Type(":list"))) def interpretSymbols(symbol, args, env, ns): - keys = [Symbol(k, -1) for k,v in sorted(env.environment.items())] + keys = [Symbol(k, -1) for k,v in sorted(env.get_all().items())] return List(keys) REPL.register("symbols", Builtin("symbols", interpretSymbols, [], return_type=Type(":list"))) diff --git a/neb/structs.py b/neb/structs.py index 88c4c6f..df7127f 100644 --- a/neb/structs.py +++ b/neb/structs.py @@ -179,6 +179,12 @@ class Environment: except: raise NebPanic(f"undefined symbol: '{key}") + def get_all(self): + if self.parent is None: + return self.environment + else: + return dict(self.parent.get_all(), **self.environment) + def __str__(self): out = "" for k, v in self.environment.items(): -- cgit v1.2.3