::の件、続き。

scala.Listの中に、

sealed abstract class List[+A] extends Seq[A]

こんなクラスがありましたよ。
このクラスは、こんなメソッドを持っているます。

  def ::[B >: A] (x: B): List[B] =
    new scala.::(x, this)

昨日、抜粋したcase class の::が何故、いきなり中置で扱えるのか、
意味不明でしたけども、これですっきりしましたね。
case classは、デフォルトでInfix classなの?とか、
トンチンカンな事を考えたりもしましたが、全くそんな事は無かった様です。


まぁ、実際問題、:::メソッドの定義の直前にあるメソッド定義が::だった訳なんですけども。
余りにもあっさり書いてある為か、僕が完全に読み飛ばしていたと言う事をここに懺悔します。


正直に申しあげまして、scalaの中の人は、何故こういう罠を仕込むのか理解に苦しみます。
Listみたいな汎用的な名前は、単一の何かを表す為だけに使ってほしいものです。
同じコードの中に、処理や機能が違う色んな宣言のListが混ざってたりするのは、
気分的によろしくないと思います。


それとも僕が、関数型言語の世界を知らないから、そういう風に感じるだけなんでしょうか?