2012-04-10 18 views
24

(より大きいチルダ)私はカテゴリをモデル化し、(紙で見つかった)次のScalaクラス定義を持っている:Scalaの〜>演算子

trait Category[~>[_, _]] { 
    def compose[A, B, C] 
    (f: B ~> C) 
    (g: A ~> B) 
    : A ~> C 
    def id[A]: A ~> A 
} 

誰かが「〜>」カテゴリに何を意味するのか私に説明することができます型パラメータ、およびメソッドの戻り値の型? または私はスカラ座(ジャワから来る)に新たなんだ、だから、Scalaのユーザーが知っているべきものだなら、私を許して...それを説明してリソースに を私に指示が... は、事前にありがとう

答えて

26

~>は、タイプパラメータCategoryのプレースホルダ名にすぎません。 class Option[T]Tと同様です。

さらに、を~>[B, C]の略語として書くことができます。あなたが名前を変更した場合、物事は、明確に取得

は多分:

trait Category[Mapping[_, _]] { 
    def compose[A, B, C](f: Mapping[B, C])(g: Mapping[A, B]): Mapping[A, C] 
    def id[A]: Mapping[A, A] 
} 
+0

今では明確だ...私は私が(Javaのとは違って)物事に名前を付けるために奇妙な文字を自由に使用することが可能に慣れると思います。私は実際には "〜>"は何か特別な意味を持っていたと思っていましたが、これを正しく理解して何かに置き換えることができます。本当にありがとうございます! – Andrea

+0

はい、完全に恣意的です(Scalaの識別子の命名規則の中ではもちろん)。 – Debilski

+8

ところで、「演算子」が選択された理由、つまり文字の代わりに演算子が使われた理由は、カテゴリ理論の領域で〜>「モーフィズム」の概念に簡単に変換されるという希望でした。 、 "矢印"など)。通常、オペレータには注意が必要です。 –