Special operator is what they're called in CL. I don't know offhand what they're called in Scheme. But what it amounts to is that if only exists as a clause in the compiler.
Arc does have protect, but I'll leave it to more experienced lispers to tell us if it interacts well with ccc.
It seems to me that format and loop are two of the top 5 worst things about CL, and I can't see any reason why even those who like them would need them in the base language.
Looks that way. :) This is why I think arc.arc should look like:
(mac rfn yadda yada
"Recursive FN: an anonymous function that can call itself"
...implementation...)
FYI, CL is funny, both flet and labels elt us give names to loacl functions, but only those declared with labels can be called recursively. I wonder why flet got kept, backwards compatibility?
The only parts of this that aren't standard in PHP are the sset() and sendpage() calls, which are short for some longer stuff involving a template object, and the localredirect(), which just does some bookkeeping.
This is a lot longer than the Arc example, of course. However, one advantage it has (which is a must for some of us) is that once I'm done writing it, I can hand the html files to a web designer and I don't have to do anything at all when the boss/client wants to completely change the way it looks.
I would suggest that marking a literal vector of bytes is not the most useful role double quotes could play. Python has a lot of history of using that, due to exactly this kind of confusion of strings and vectors of bytes, leading to b"", u"", etc.