2011-08-12 30 views
17

Loại dự báo nào trong Scala hữu ích cho? Tại sao hệ thống kiểu của Scala hỗ trợ cả kiểu dự báo và kiểu phụ thuộc đường dẫn? Lý do đằng sau quyết định thiết kế này là gì?Loại dự báo hữu ích cho là gì?

Trả lời

13

Không phải là một câu trả lời hoàn chỉnh, nhưng đây là một số sử dụng cho loại hình dự báo mà tôi đã gặp phải:

  • Loại mực Lập trình meta. Đối với ví dụ, xem loạt Michid của (phần I, II, III), Jesper của implementation of HList, và series at Apocalisp.

  • Giải pháp thay thế để cho phép suy luận kiểu (ví dụ: dưới đây là một số câu hỏi SO trước đây 1, 2, 3).

  • Một cách để gói một loạt các loại vào một tham số kiểu duy nhất. Ví dụ, trong thư viện ma trận tôi đang phát triển, tôi xác định trait Scalar { type A; type B; type C; ... } và sau đó chuyển nó thành một tham số duy nhất cho đặc điểm ma trận của tôi, trait Matrix[S <: Scalar] ... Các loại riêng lẻ có thể được gọi là S#A, S#B, v.v. Giữa hai ma trận của loại Matrix[S], cho cùng S, các loại sẽ tương thích (không giống như những gì sẽ là trường hợp với các loại phụ thuộc đường dẫn).

+0

bài Jesper của bạn liên kết khẳng định rằng mã không làm việc, nhưng sau đó bài giải thích rằng phiên bản mới hơn của Scala hỗ trợ nó: http://jnordenberg.blogspot.com/2009/09/type-lists-and-heterogeneously-typed.html – Blaisorblade

9

Một loại điều dự báo có thể được sử dụng cho là một phần ứng dụng loại:

({type λ[x]=Tuple2[Int,x]})#λ 
Các vấn đề liên quan