为什么我不能在作业中使用 Unicode 字符√和∀?

Why can I not use the Unicode characters √ and ∀ in assignments?

Julia 对 Unicode 字符有一个有趣的支持。该语法允许我在 iJulia 笔记本中 运行 以下内容。

μ = 10
σ = 20
∑ = sum
a = [1,2,3,4] 
∑(a) # prints 10

但是,似乎并不总是可以将 Unicode 字符用于 function/variable 名称。

sqrt √ 例子

√ = sqrt

出现以下错误:

syntax: unexpected "="

对于所有∀例子

forall(x,f) = [f(i) for i in x]
∀ = forall

给出以下错误:

syntax: invalid character "∀"

为什么?

我是不是理解错了规则?我假设 Unicode 字符会像任何其他字母字符一样被解释,但我似乎在看似简单的语句中遇到了两个不同的错误。

我认为问题是这些函数已经被定义了。

查看 link 一些具有内置于 Julia 中的含义的字符:https://github.com/JuliaLang/julia/blob/d234b4ff56df9ce85198dcdd8d9ef1073b2436fc/base/operators.jl#L403-L432(注意,并非所有这些都是 unicode,可能在 base 的不同文件中还有其他字符 --但这至少涵盖了您的 sqrt 示例)

是已有函数的名称;尝试 运行 以下操作:

julia> methods(√)
# 12 methods for generic function "sqrt":
sqrt(a::Complex{Float16}) at float16.jl:141
sqrt{T<:FloatingPoint}(z::Complex{T<:FloatingPoint}) at complex.jl:237
sqrt(z::Complex{T<:Real}) at complex.jl:261
...

至于 ,它在 Julia 源代码中不是有效字符(还?)。参见this discussion;结果是,开发人员仍在考虑是否让 成为一个有效字符,如果他们这样做了,它会有什么意义。