Có rất nhiều thông tin về các loại phụ thuộc trong Haskell và Scala. Đối với OCaml, không nhiều lắm. Có ai có kỹ năng, đủ để cung cấp một ví dụ mã hóa làm thế nào để đạt được điều này trong OCaml (nếu nó có thể ở tất cả)? Có tất nhiên (bị bỏ rơi) Dependent ML, nhưng có vẻ như không thể kết hợp những thứ như vậy trong mã OCaml "thông thường".Các loại phụ thuộc trong OCaml
Về cơ bản, điều tôi muốn làm là xóa mã như assert(n > 0)
và kiểm tra mã tại thời gian biên dịch.
EDIT
Là một mặt lưu ý, nó có giá trị nhắc đến chi nhánh OCaml Hybrid Contract Checking, mà có thể điền vào một số nhu cầu của một hệ thống kiểu phụ thuộc. Thay vì assert(n > 0)
sau đó bạn sẽ viết một hợp đồng:
contract f = {x : x > 0} -> int
let f x = x + 1
let dummy_variable = f (-1) (* Won't compile *)
Tôi có thể hỏi "rất nhiều thông tin về các loại phụ thuộc trong Haskell và Scala" ở đâu? Mặc dù có một cái nhìn tổng quan hợp lý về cộng đồng Haskell, tôi không biết bạn đang đề cập đến điều gì. (Tôi chắc chắn sẽ xem xét công việc của UPenn về [Dependently-Typed Haskell] (http://www.cis.upenn.edu/~sweirich/) là có liên quan, nhưng đó là nghiên cứu cực kỳ hơn là thực tế, và có thể không "nhiều" về khối lượng). Tôi không biết bạn đang nghĩ gì về Scala - ngoại trừ mối quan hệ với các kiểu phụ thuộc vào con đường? – gasche
Ehm, trên stackoverflow, tôi đã suy nghĩ. Có lẽ tôi đã bị lừa bởi các kiểu con đường phụ thuộc vào Scalas. –