When programming in lisp you tend to accumulate parens on the right. One way to virtually eliminate this is to have a very low precedence infix operator apply, like Haskell's $. I used : in Atom:
Atom code - `(op: / _ 2)`
Arc code - `[/ _ 2]`
It also opens avenues to python-like block indentation syntax. For example...
Atom code:
def (fact n):
if (= n 0):
1
* n (fact: - n 1)
Arc code:
(def (fact n)
(if (eq n 0)
1
(* n (fact (- n 1)))))
This makes programming in Atom very different from programming in other Lisp dialects, but it's a feature I'd kill for... If Arc had it, I wouldn't have to design Atom. :P
-----------
And then I clarified the meaning of the last example:
-----------
Each line in the indented block is added to the if's line. For example:
Yes, you stumbled right into the problem with this scheme. But it's not really a problem if you accept PG's idea that parens are allowed to be implicit whenever that is the only thing that makes sense.
I have found s-expressions easier to edit with a smart editor than other syntaxes. Having to think again about the layout of syntax doesn't sound very appealing, but I would probably give it a try if someone implemented it.
I wonder if you could try implementing this as another compile step on top of arc (with another REPL layer, etc), and then see whether it becomes more popular to code with or without this.