Ha! I did the same thing! There are a bunch of funcs & macros in "On Lisp" that are helpful (like "abbrevs" to abbreviate unbearably long names, and "group" to help write macros to eliminate logically unnecessary parens). All said and done, the verbosity of CL is not that big a problem when you can fix it with 1/2 page of macros.
I also took it one step farther; hygenic macros. I wrote a macro called hyg that expands into a defmacro that uses let and gensym to avoid capture of all the symbols that are supposed to be hygienic. (Basically it automatically implements the solution in On Lisp for you). the syntax is
(hyg name (x) `(a b c) `(do-something-with ,x a b c))
where name is the name of the macro, x is the argument to the macro, a,b,c are the hygienic symbols, and the rest is the body of the macro. If anybody wants to play with it, I'll post it.
It's for Common Lisp, not Arc, but if you want to play with it, send me an e-mail: jjuniman at ll dot mit dot edu. I tried to post it but the formatting got all mangled up and it became unreadable. It's not a lot of code, only a dozen lines or so.
To post code that looks like code, surround it by blank lines and indent each line with two spaces—that should allow the code to display in a sane manner.
Nope, Linux. But let me try again, since I have a different macro now that's considerably simpler, so the loss of newlines isn't as bad.
The original one I wrote wasn't working quite right. Then I found something in On Lisp, a macro called with-gensyms that I renamed with-hygeine due to a symbol conflict with something in Clisp:
This question is not language-specific. I've written run-time equation evaluators in C before, and basically what you have to do is convert infix to postfix (aka "reverse Polish" notation), then execute the postfix. You can find easy algorithms online to do both these things. Postfix expressions are evaluated using a stack, and it is very easy to write code to do this.