3. Personally, I don't like names formed like this x->y to indicate a conversion because this order makes it difficult to understand compositions; for example, ( y->z(x->y... ) ) is less straightforward than (z<-y(y<-x... ) ). In contrast, x->y is much easier to read than y<-x. You can see here one of the many difficulties that language designers come up against.
Name:
Anonymous2013-06-15 19:06
Going to do (y->z (x->y x)) a lot in your code?
(define (x->z x) (y->z (x->y x)))
And BAM, you can now do (x->z x).
It's like magic, eh? Who would've thought that defining new functions makes it easier to do repetitive operations that are otherwise awkward and/or long-winded to express in the language? It's almost as if they were precisely meant for this!
Then there's also the fact that in Scheme and Lisp in general, you can not only define new functions, but also new syntax, but I better don't blow your minds out with that.