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

时间:2015-02-11 17:08:54

标签: unicode variable-assignment julia

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

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

但是,似乎总是可以将Unicode字符用于函数/变量名称。

sqrt√例子

√ = sqrt

给出以下错误:

syntax: unexpected "="

forall∀example

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

给出以下错误:

syntax: invalid character "∀"

为什么?

我误解了规则吗?我假设Unicode字符将被解释为与任何其他字母字符一样,但我似乎在看似简单的语句上得到两个不同的错误。

2 个答案:

答案 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示例)