Some of the ambiguity with functions could be cleared up using the lambda calculus (or just the lambda notation), which makes explicit what arguments a function takes. There is always a confusion in an expression such as [itex]f(x)[/itex] as to whether you mean the function, or whether you mean the value of [itex]f[/itex] at a particular point [itex]x[/itex]. The lambda calculus makes this clear. Your notation [itex]x\mapsto x^2[/itex] is basically equivalent (I think) to the lambda calculus, which would indicate that function by [itex]\lambda x . x^2[/itex]. I think that the only reason people don't use the lambda notation is that it's a lot of trouble, and usually it's not necessary.