I've been looking at ac.scm, and I'm confused by a few things in the internals of the implementation: a) Why does Arc terminate lists with the symbol 'nil instead of '()? b) namespace-set-variable-value!: How is this different from define? (The PLT manual just confuses me.) c) (list 'quote 'nil): isn't this just a verbose way of saying ''nil or (quote 'nil)? d) `(ar-funcall0 ,(ac fn env) ,@(map (lambda (x) (ac x env)) args): This is generating Scheme code which is later passed to eval, which seems like a macro, but it's not using Scheme macros. Could this use "real" macros? Or is this a "real" macro? Does it matter? e) (eval scm (interaction-environment)): Why use interaction-environment? (R5RS leaves me more confused than before.) One interesting discovery: entering :a at the REPL will drop you from Arc into Scheme; (tl) will then return you to Arc. |