On Wednesday, July 16, 2014 3:40:31 PM UTC-4, Ben Arthur wrote:
>
> julia> const ∪ = union
>

∪ is already defined to union in Julia.

julia> const ¬ = !
>
> ERROR: syntax: invalid character "¬"
>
The ¬ character (U+00AC) is in category Sm (math symbols), and Julia does 
not allow all possible math symbols as identifier characters.  The reason 
is that, for each math symbol, we need to individually decide whether it 
will be parsed as part of an identifier or as an operator.  And, if it is 
parsed as an operator, we need to decide the precedence.

In consequence, there is a whitelist of math symbols allowed in identifiers
      
https://github.com/JuliaLang/julia/blob/master/src/flisp/julia_extensions.c#L51-L93
and another whitelist of symbols treated as operators
      
https://github.com/JuliaLang/julia/blob/master/src/julia-parser.scm#L6-L22
Both of these lists will probably grow over time.

In the case of ¬, I think it would make sense to parse it as a prefix 
operator (with the same precedence as !), and probably to define
     const ¬ = !

I actually thought about ¬ when I recently whitelisted a bunch of unicode 
math symbols in Julia.   My hesitation was that I'm not sure what useful 
purpose ¬ would serve in Julia code, other than as a synonym for !.   It's 
not any shorter than !, and in general in Julia we have tried to avoid 
introducing redundant syntax (e.g. "and" and "or" synonyms for && and 
||).   Following the "when in doubt, leave it out" philosophy, I therefore 
left ¬ out of the patch.

However, if an argument can be made for the utility of ¬ in Julia, it would 
be easy to include.

--SGJ

Reply via email to