おそらく、元の論文で提案されたものとは対照的に、Scala にあるものと関係があると思います。
実装の違いはさておき、私はこの質問についても考えたことがありますが、Scala の特性には実際に何かが必要であるという結論に達しました。Scala でメソッドを作成できるが、メソッドを除外できない方法は奇妙です。競合を避けるために、メソッド解決順序(またはScala で言えば線形化) と呼ばれるものを他の言語から借用していました。多重継承をサポートする言語にはよく知られている問題があり、私は Scala をこのグループのメンバーとして大胆に分類します。問題は、複雑すぎて理解に時間がかかることです。
Scala のメソッド解決順序は奇妙で、メソッド ディスパッチには独自のアルゴリズムがあります。Python で使用されている Dylan の C3 ではなく、いくつかの顕著な問題がありますが、それに関連するすべての問題があります。さらに悪いことに、メソッドを呼び出すことで、Python オブジェクトの MRO を調べることができます.mro()
。Scala には同等のものはありません。
メソッドが解決される場所を調べる必要があるたびに、頭の中で Scala MRO アルゴリズムを実行するのはあまり好きではありません。