2012-04-10 17 views
24

(büyüktür tilde) Aşağıdaki scala sınıfı tanımı (bir kağıt bulunur), modelleme kategoriler vardır:Scala ~> operatörü

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

birisi '~>' Kategori ne anlama geldiğini bana açıklayabilir type parametresi ve yöntemlerde dönüş tipi? Ya Scala (Java gelen) yeniyim, böylece bir scala kullanıcı bilmeliydim şey olursa beni affet ... bunu açıklayan bir kaynak beni direkt ... şimdiden teşekkürler

cevap

26

~> sadece Category'un tip-parametresi için yer tutucu adıdır. class Option[T]'daki T gibi.

Ayrıca, Scala sözdizimi ~>[B, C] için bir kısa yol olarak B ~> C yazmanızı sağlar. Yeniden adlandırmak,

Belki işler daha net olsun:

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

Şimdi daha açık ... Ben (Java aksine) şey isim garip kömürü kullanmak serbest alışması düşünüyorum. Aslında '~>' özel bir şey demek istedim, ama bunu doğru anladığım kadarıyla değiştirebilirim. Çok teşekkür ederim! – Andrea

+0

Evet, tamamen keyfi (Scala’nın tanımlayıcılar için adlandırma kuralları içinde, tabii ki). – Debilski

+8

Bu arada: Bir "operatörün" seçilmesinin nedeni, yani harf karakterleri yerine operatör karakterleri, kategori teorisi alanında kolayca bir "morfizm" (aka "mapping") kavramına dönüşme umuduydu. , "ok", vb.). Genellikle operatörlere dikkat etmelisiniz. –

İlgili konular