I find it very hard to read. The reason is that it almost completely lacks demarcation between different things.
Expressions should be readable in a single flow. Lisp breaks that.
For example:
(+ (* 5 3) (* 3 2))
This is not easily readable because there are breaks in the "flow".
You need to go like:
* `+` is going to add things together
* oh, there's a nested expression here, pause...
* `` is multiplying 5 and 3 - cool, back to the previous thing.
oh, another nested thing.
* `` is multiplying 3 and 2 - back again...
done... so where were we?
Here's how a readable expression would look like IMO:
(5 * 3) + (3 * 2)
This reads very naturally:
* 5 times 3 - 15, ok go on...
* nested expression... hm, ok.
* 3 times 2 - 6, let's go back now...
* ah right, 15 + 6 is 21... done.
Alternatively:
5 3 * 3 2 * +
* take 5 and 3, multiply: 15
* take 3 and 2, multiply: 6
* add them together: 21
Which is what FORTH does. This is almost perfect, but a little hard for humans to follow (though this is exactly what machines want to do) because you still need to keep the stack of values in your head.
I've been studying about this and came up with something in the middle:
(5 * 3) (3 * 2) +
This has the advantage that you the distance from the values in the stack to the point of reading when going left-to-right is optimal: there is no better way to represent this if your objective is to avoid intermediate values.
It is similar to FORTH, but optimized for humans to read instead of machines:
* `5 * 3` is 15.
* `3 * 2` is 6.
* `+` the values, which are 15 and 6: 21.
The parens are not required if you use some alternative syntax to mark boundaries, for example:
5 * 3 >> 3 * 2 >> + ;
The `>>` is used to "pipe" the value to the next expression, while `;` is used to terminate the expression. This also has the benefit of showing the reader the direction of the flow.