lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

On Feb 7, 2008 12:59 PM, Roberto Ierusalimschy <> wrote:
>   Note 3: Redittors must have read that Paul Graham has released Arc,
>   which is also a Lisp-1 with Common Lisp style macros; I expect this
>   to create a bit of buzz, out of which might emerge proper solutions
>   the macro hygiene problem.

Didn't Scheme solved this problem years ago? (BTW, didn't Scheme solved
most "Arc problems" years ago?)

Scheme macros are composed by term rewriting: you essentially write "this macro-call expands to that code", but you won't compose your code piece by piece, walk through it, analyze it with arbitrary programs etc.: you don't really handle code as first-class data. You're confined in that term-rewriting sublanguage, which is Turing-complete, but far from being as expressive as the full Scheme. This is the price to pay to have hygiene handled for you...

As for how Arc would be different from Scheme, my feeling is that what exists today is only a marginally better Scheme core (modulo that macro hygiene question), but that it has more potential than Scheme. A problem with the latter is that it's stuck in a design-by-committee trap, which makes its evolution really painful. Besides, it won't acknowledge its platform (TCP/IP and threads in the standard lib, etc.), which is cool for a committee, but not for getting things done.
In theory, you could just decide to stick to a given extended version of Scheme, but that's not how people work: when they have a language implementing a standard, they're very reluctant to use features that aren't in the standard. Languages defined by their reference implementations, such as Lua, usually do much better. I think that Qi is much cleaner and more powerful than Arc, except for one capital sin for a Lisp: it hasn't got macros!