2012-04-10 30 views
24

Tôi có định nghĩa sau lớp scala (tìm thấy trong một bài báo), mô hình loại:Scala ~> (dấu ngã lớn hơn) điều hành

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

ai đó có thể giải thích cho tôi những gì '~>' có nghĩa là trong Thể loại loại tham số, và trong phương thức trả về kiểu? Hoặc trực tiếp cho tôi tới một tài nguyên mà giải thích nó ... Tôi mới đến Scala (đến từ Java), do đó tha thứ cho tôi nếu đó là một cái gì đó một người dùng scala đáng lẽ phải biết ... Cảm ơn bạn trước

Trả lời

26

~> chỉ là tên trình giữ chỗ cho loại tham số của Category. Giống như số T trong class Option[T].

Ngoài ra, cú pháp Scala cho phép bạn viết B ~> C làm viết tắt cho ~>[B, C].

Có lẽ mọi thứ trở nên rõ ràng hơn, nếu bạn đổi tên nó:

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

Bây giờ là rõ ràng hơn ... Tôi nghĩ rằng tôi sẽ được sử dụng để được tự do sử dụng char lạ để đặt tên sự vật (không giống như Java). Tôi nghĩ trong thực tế rằng '~>' có nghĩa là một cái gì đó đặc biệt, nhưng nó có thể được thay thế bởi bất cứ điều gì như tôi hiểu điều này một cách chính xác .. Cảm ơn bạn rất nhiều! – Andrea

+0

Có, nó hoàn toàn tùy ý (tất nhiên là trong các quy tắc đặt tên của Scala đối với số nhận dạng). – Debilski

+8

Nhân tiện: Lý do tại sao "nhà điều hành" được chọn, tức là nhân vật điều hành thay vì ký tự chữ cái, là niềm hy vọng rằng trong lĩnh vực lý thuyết danh mục ~> dễ dàng chuyển sang khái niệm "hình thái" (aka "mapping") , "mũi tên", v.v.). Thông thường bạn nên cẩn thận với các toán tử. –

Các vấn đề liên quan