Although it initially takes some getting used to, I think Clojure/Lisp’s prefix operators are a great idea. They make multi-argument functions really easy, so you can say things like:
(= a b c)
…instead of the much-clunkier:
((a == b) && (b == c))
After a while you start to wonder why languages bother with operators that are limited to two arguments.
> variants are equally cool, as you can do things like
replace the classic range-check:
if ((0 <= x) && (x <= 10)) ...
(if (<= 0 x 10) ...)
But in the early days, I found it hard to remember whether I wanted
(< x 2) or
(> x 2). For the simple pair, greater-than or less-than
just seemed to naturally belong in the middle, for the visual reminder.
So here’s my mind-hack tip: Think of them as ‘getting-larger’ and ‘getting-smaller’ operators, and look at the shapes of the characters.
< is a triangle that starts small on the left and gets
larger as it goes right.
(< 2 x) is checking if the arguments start
small on the left, and get larger as you go right. Two is small, x is
>. It starts large on the left of the shape & gets
smaller as it goes right.
I found that helped the penny drop for me. Hopefully it’ll help a reader or two…