如何定义isa这样的函数?

isa函数有2种使用方法:

  1. isa(x, type)
  2. x isa type

如果我定义一个函数:
function add(x, y)
x + y
end
怎么样才能用 1 add 2 这样的方式运行?

不行。Julia不支持自定义函数是中缀表达式。只有有限的符号被解析为中缀表达式。比如+,或者一些有+含义的Unicode

2 个赞

感谢解答。
我很好奇像isa这样的可以放在中间的方法是在julia里实现的还是c/c++里实现的,我在源码里没有找到它的定义;另外还有没有像isa这样的可以放在中间的其他非符号定义的函数?

Mathematics · The Julia Language

是在 https://github.com/JuliaLang/julia/blob/master/src/julia-parser.scm 定义的

3 个赞

我之前也疑惑为啥不提供支持自定义函数是中缀表达式的方法,后来想想这其中有 Julia 的设计哲学的影响,如果实在想写中缀表达式,那么考虑使用 Julia 的 宏 实现吧。 :slight_smile:

社区里的很多人反对支持自定义的算符的解析方式。这是因为如果一个符号在一个package里是中缀,另外一个package变成了前缀或者后缀,那么就会造成生态上的割裂。数学符号本身的意义往往都是唯一的。

1 个赞