Bracket loop bracket print bracket eval bracket read bracket bracket bracket bracket?
The key thing I think is balancing and shifting parens.
(loop (print (eval)) (read))
Is quite hard to sound different from (loop (print (eval (read))))
And more crucially what about the difference between these two: (let ((x (f))) (g x) (g x))
(let ((x (f)) (g x)) (g x))
(I think writing these on a single line makes them written more like they might be spoken)On the other hand I think being able to modify the syntax structurally is a big advantage.
Going back to the topic of the OP I think a useful thing is putting functions after their arguments, and optimising to have single arguments or most non-main arguments being typically small. For example something more like
read
| eval
| print
| loop
And maybe some way to do arguments like read stdin
| eval some-environment
| print :pretty
| loop