Starting in 
https://github.com/JuliaLang/julia/pull/11927#issuecomment-117374003 and 
continuing on 
in https://github.com/JuliaLang/julia/issues/11966#issuecomment-118212265,
I had raised an issue that can cause confusion to newcomers to Julia, and 
potentially lead to programming errors if one isn't careful.
There is also the issue of inconsistency within Julia, where certain 
mathematical operations are actually treated as operations,
and others that look like taking something to a power, i.e. with 
superscripts, are treated as identifiers.

I am *not* suggesting that this should be changed in Julia (people got a 
bit upset with that idea), but rather trying to propose ways
that the use of superscripts as part of variable names can be made much 
safer in practice.

For example:

julia> cube(x) = x³
cube (generic function with 1 method)
julia> cube(3) # Silly me, I think I'll get 27
ERROR: UndefVarError: x³ not defined
 in cube at none:1
julia> x³ = 4242
julia> cube(3)42

julia> ∛x³
> 3.4760266448864496


Besides documenting this, as @Ismael-VC has suggested, I think that it 
might be useful for the compiler to try to catch some of the cases that 
could actually lead to programming errors.  In the above case, the compiler 
could detect that a variable of global scope was being used, along with a 
local variable that is the same except for trailing superscript(s), and 
give a warning.
Another possible programming error that can occur if one mistakenly thought 
that `³` was performing a cube operation, is that the variable x is 
updated, but the cached cube value in the variable `x³` is not.  That could 
also be caught by the compiler.

What do people think?
Are there any other things that could be done besides documentation, to 
help make using these types of identifiers easier and not error-prone?



Reply via email to