
Jacques Carette after David Menendez ... : ...
It gets worse than that. Imagine trying to explain to someone why "1 + sin" is actually "\a -> const 1 a + sin a".
It isn't that hard - it is done routinely in mathematics courses. In fact, that is what 1+sin means in Maple today (and has for 25 years). It is also what it means in MuPAD.
Actually in Maple 1 + sin means 1+sin. Of course, you may write a:=1+sin; a(5); and get 1+sin(5), but replacing "sin" by "jacques" gives Maple a very similar behaviour. This is just a symbolic, *NOT* a functional object! (And somehow I am sure that you know that...) MuPAD behaves identically.
That is what polymorphism is all about!
Not in this context, sorry. This is a convention. Another one may give you an abomination, e.g., 1+sin means 1 plus the addres of the sin routine. (Of course not in a 'decent' language, but I know a few undecent. Jerzy Karczmarczuk