haskell có loại phụ thuộc không?


20

Tôi biết Haskell đã có khả năng tham gia một loại so với loại khác (tương tự như lập trình mẫu trong C ++), nhưng tôi tự hỏi liệu Haskell cũng có thể tham gia một loại trên các giá trị hay không - liệu nó có hỗ trợ các loại phụ thuộc hay không. Với các loại phụ thuộc, bạn có thể có một loại được tham số hóa trên các số nguyên, ví dụ các vectơ có kích thước n, ma trận có kích thước n × m, v.v.

Nếu không, tai sao không? Và có khả năng nào nó sẽ được hỗ trợ trong tương lai không?

Câu trả lời:


18

Haskell không hoàn toàn có các loại phụ thuộc đầy đủ, mặc dù nó có thể rất gần với các tiện ích mở rộng như DataKindsTypeFamilies. Vấn đề tại thời điểm này, theo như tôi biết, là Haskell cấp giá trị có đáy rõ ràng nhưng Haskell cấp loại thì không.

Điều này không ngăn bạn tham gia các loại tham số so với các loại khác, bao gồm cả việc DataKindnâng cao giá trị . Kể từ GHC 7.6, và khi DataKindsđược bật, bạn có thể sử dụng các chuỗi và chuỗi tự nhiên cấp độ loại, cũng như các bộ dữ liệu cấp độ loại, danh sách cấp độ loại và nâng cấp loại của bất kỳ (loại không cao hơn, không tổng quát , các kiểu dữ liệu đại số không bị ràng buộc, tương tự (nhưng tổng quát hơn nhiều so với) khả năng sử dụng số nguyên trong các mẫu của C ++.


1
Các thay đổi sắp tới trong GHC 8 có thêm các loại phụ thuộc đầy đủ không?
Janus Troelsen

@JanusTroelsen Không hoàn toàn; họ cho phép các loại phụ thuộc .
Ngọn lửa của Ptharien

8

Để mở rộng một chút về những gì Flame của Ptharien đã giải thích độc đáo về tình trạng hiện tại - và GHC Haskell dường như đang tiến xa hơn theo hướng các loại phụ thuộc (trong khi duy trì tách pha) với mỗi phiên bản.

Vì vậy, ví dụ tại ICFP 2013 vào tháng 9 năm nay, một bài báo về giai đoạn tiếp theo của quy trình này sẽ được trình bày, "Hướng tới việc gõ phụ thuộc vào Haskell: System FC với sự bình đẳng loại" , về việc thu gọn các loại và loại. Như đã được thông báo là kế hoạch khoảng 3 năm trước .

Và nó thậm chí còn đề cập đến bước tiếp theo: "Chúng tôi cũng biết rằng luận văn sắp tới của Adam Gundry sẽ bao gồm các loại in trong phiên bản System FC và chúng tôi cũng muốn cung cấp tính năng này bằng ngôn ngữ nguồn. (Giao tiếp cá nhân)"


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.