I'm always fascinated (ok, maybe too strong of a word) by perceptual vs real things, such as how contrast and color of nearby objects can change your perception of other objects. Another example is when syntax is too orthoganal, it can be harder to visually parse:
def square-of (x :: <integer>) :: <integer>
x * x
end
In this hypothetical language (resembling Dylan), x is an integer, and square-of returns an integer. Because both use "::", I find it harder to very quickly distinguish the arguments and the return type. If we use "=>" instead:
method square-of (x :: <integer>) => <integer>
x * x
end
it's much clearer, at least to me. So sometimes being pure is not the best choice. I remember reading an article or web page about this in the past, but I don't remember the details.