aboutsummaryrefslogtreecommitdiff
path: root/neb/std/repl.py
diff options
context:
space:
mode:
authormryouse2022-07-07 03:54:11 +0000
committermryouse2022-07-07 03:54:11 +0000
commit4f7269c5c78170157a234ce262053742fef73953 (patch)
tree697d2797bf38550b24c56d2e72146286e150a272 /neb/std/repl.py
parent8e8b54a2a141955d0cbf4dd6ca6635fd5f6fb786 (diff)
implement macros function
Diffstat (limited to 'neb/std/repl.py')
-rw-r--r--neb/std/repl.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/neb/std/repl.py b/neb/std/repl.py
index 73f82d6..fbb0366 100644
--- a/neb/std/repl.py
+++ b/neb/std/repl.py
@@ -1,4 +1,4 @@
-from .. import TypeEnum, Environment, Arg, Builtin, UserFunction, Function, evaluate, InterpretPanic, Callable
+from .. import TypeEnum, Environment, Arg, Builtin, UserFunction, Function, evaluate, InterpretPanic, Callable, Macro
from ..structs import *
REPL = Environment()
@@ -18,7 +18,7 @@ def interpretSymbols(symbol, args, env, ns):
REPL.register("symbols", Builtin("symbols", interpretSymbols, [], return_type=Type(":list")))
def interpretFuncs(symbol, args, env, ns):
- keys = [Symbol(k, -1) for k,v in env.environment.items() if isinstance(v, Builtin)]
+ keys = [Symbol(k, -1) for k,v in sorted(env.environment.items()) if isinstance(v, Function)]
return List(keys)
REPL.register("funcs", Builtin("funcs", interpretFuncs, [], return_type=Type(":list")))
@@ -28,3 +28,9 @@ def interpretUserSymbols(symbol, args, env, ns):
return List(keys)
REPL.register("user-symbols", Builtin("user-symbols", interpretUserSymbols, [], return_type=Type(":list")))
+
+def interpretMacros(symbol, args, env, ns):
+ keys = [Symbol(k, -1) for k,v in sorted(env.environment.items()) if isinstance(v, Macro)]
+ return List(keys)
+
+REPL.register("macros", Builtin("macros", interpretMacros, [], return_type=Type(":list")))