> A more general way to do this would be, when you have an sexpr of the form "((...) ...)", before doing anything else, to macroexpand the sexpr in functional position. Then you could write modules as macros, expanding to the evaluation of their arguments in that module (the macro equivalent of what mine do via 'defcall now).
Done. The above links to the result of "git diff" after the changes. While I think it works (it loads arc.arc fine), I don't want to actually push it to anarki in case I've made a mistake and there's some existing code it breaks. With it, and my module system, you can do the following:
(prn "test.arc evaluated")
(mac mquote (x) `',x)
At the arc repl:
Use (quit) to quit, (tl) to return here after an interrupt.
arc> (load "lib/module/python.arc")
arc> (use test)
#3(tagged module #<namespace>)
arc> (mac test* (x) (test x))
#3(tagged mac #<procedure>)
arc> (test*.mquote foo)
If this gets pushed to anarki, it would be trivial to rewrite lib/module/python.arc so the "(mac test* ...)" line is unnecessary.