1) I would use alias to ensure that atom? automatically picks up extensions to cons?, etc.
2) I've been experimenting with keeping prefix <- at the top-level, just to make globals salient. But this 'idiom' is less than 48 hours old; what do you think of it?
<- carif (cons? & car)
3) I tend to often wrap stuff in parens even when I don't have to. I only skip parens for def/mac/if/while, etc., and for imperatives like err and prn. So:
6) There's a gotcha with multi-branch ifs: beware if you rely on paren insertion in test expressions:
if nil
car '(34 35)
no nil
cdr '(34 35)
You might expect this to return (35), but it doesn't because it's interpreted as:
(if nil
(car '(34 35))
(no nil (cdr '(34 35))))
I've been guarding against this by always adding parens for things that should act as expressions, and by always explicitly adding parens in multi-branch ifs:
I think this adds to your case against indent-sensitivity :) Multi-branch if is the one place I find myself wanting more syntax. Curlies for all their flaws really help to separate test expressions from actions in C or Java. I experimented with a 'comment token' in the past (http://arclanguage.org/item?id=16495) but that feature was lost in the move to infix.
1) Interesting! I assumed alias was an alias for <-. Clever, making it define a macro.
2) I liked being able to line up the infix <- for different-length variable names assigned in succession:
Optimize_cons <- nil
Optimize_append <- nil
For carif, I was using it more like an "anonymous" def where I didn't have to name the arguments. Perhaps this purpose could use its own top-level form?
By the way, I like the Global naming scheme, which I picked up from Coercions; it's a good, surprisingly readable alternative to mashing shift for GLOBAL names.
3) Ah, ern is what I was looking for! Should've looked instead of guessing names from Arc, haha.
4) A bit much for my tastes, but then so is infix. ;)
5) I noticed and tried to use it throughout. Still missed a few instances, I gather! :)
6) Yeah, I ran into that a bit. Might've missed some cases, though.