Julia 什么使朱莉娅可以组合?

Julia 什么使朱莉娅可以组合?,julia,Julia,我见过很多地方提到朱莉娅是“可组合的”。我知道: 可组合性是处理组件之间关系的系统设计原则。一个高度可组合的系统提供了可以选择并以各种组合组装的组件,以满足特定的用户需求 但我很好奇Julia的具体组成部分是什么,使其具有可组合性。这是我用自己的实现重写基函数的能力吗?我想我会冒险给出一个答案,尽管我的理解可能不比你的更完整 据我所知(在Stefan的“多重派遣的不合理有效性”JuliaCon谈话中,有很大一部分是由Oscar在评论中联系到的),我想说部分是: 正如您所说,该功能使用您自己的实现

我见过很多地方提到朱莉娅是“可组合的”。我知道:

可组合性是处理组件之间关系的系统设计原则。一个高度可组合的系统提供了可以选择并以各种组合组装的组件,以满足特定的用户需求


但我很好奇Julia的具体组成部分是什么,使其具有可组合性。这是我用自己的实现重写基函数的能力吗?

我想我会冒险给出一个答案,尽管我的理解可能不比你的更完整

据我所知(在Stefan的“多重派遣的不合理有效性”JuliaCon谈话中,有很大一部分是由Oscar在评论中联系到的),我想说部分是:

  • 正如您所说,该功能使用您自己的实现覆盖基本函数[关键是,通过多次分派,在适当的时候让它“正常工作”(被分派到)]
    …因为这意味着如果您创建一个自定义类型并定义该类型上的所有基本/基本操作(比如说,对于数值类型来说,
    +-*/
    等,对于数组类型来说,
    getindex
    setindex!
    等),那么基于这些基本原理构建的任何更复杂的程序也将“只工作”于新的自定义类型。
    这反过来意味着您的自定义类型也将工作(AKA compose)只要人们没有过度约束他们的函数参数类型(顺便说一句,这就是为什么过度约束函数参数类型是一个问题),就可以使用其他人的包,而不需要(例如)显式兼容性

  • 在1)之后,这么多的
    Base
    方法也是纯Julia方法,因此只要定义了正确的基本操作,它们也可以用于新的自定义类型

  • Julia的基本类型和方法通常性能良好且非常方便,在许多情况下不需要进行任何自定义操作,因此您可以将所有操作的块放在一起,例如纯Julia数组或元组等。

    与Python之类的语言相比,最后一点可能最为显著,例如,生态系统的每个足够大的子集(numpy、tensorflow等)都有自己的(例如)数组的重新实现,为了获得更好的性能,这些数组最终都完全用其他语言实现(C++,对于numpy和TF),因此可能不会相互组合

  • 你应该退房