Julia对Unicode字符有一个有趣的支持。语法允许我在iJulia笔记本中运行以下命令。
μ = 10
σ = 20
∑ = sum
a = [1,2,3,4]
∑(a) # prints 10
但是,似乎总是可以将Unicode字符用于函数/变量名称。
√ = sqrt
给出以下错误:
syntax: unexpected "="
forall(x,f) = [f(i) for i in x]
∀ = forall
给出以下错误:
syntax: invalid character "∀"
我误解了规则吗?我假设Unicode字符将被解释为与任何其他字母字符一样,但我似乎在看似简单的语句上得到两个不同的错误。
答案 0 :(得分:8)
√
是现有函数的名称;尝试运行以下内容:
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;所发现的是,开发人员仍在考虑是否使∀
成为有效角色,如果他们这样做,那将是什么意思。
答案 1 :(得分:2)
我认为问题在于已经定义了这些功能。
请参阅链接一些在Julia中具有意义的字符:https://github.com/JuliaLang/julia/blob/d234b4ff56df9ce85198dcdd8d9ef1073b2436fc/base/operators.jl#L403-L432(注意,并非所有这些字符都是unicode,并且其他文件中可能还有其他字符 - 但这至少涵盖了您的sqrt
示例)