From 4f7269c5c78170157a234ce262053742fef73953 Mon Sep 17 00:00:00 2001 From: mryouse Date: Thu, 7 Jul 2022 03:54:11 +0000 Subject: implement macros function --- neb/std/repl.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'neb') 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"))) -- cgit v1.2.3