"Introduction to Caml" nóiTại sao lại thích currying đối với các tham số tuple trong OCaml?
Lưu ý, trong CAML nó là tốt hơn để sử dụng cà ri định nghĩa chức năng cho các chức năng nhiều đối số, không tuples.
khi so sánh 'a -> 'b -> 'c
quy ước gọi đến 'a * 'b -> 'c
.
Khi làm việc với SML/NJ, tôi đã quen với việc sử dụng các loại bộ tuple cho cả đầu vào và đầu ra: ('a * 'b) -> ('c * 'd)
để sử dụng bộ dữ liệu để thể hiện nhiều đầu vào.
Tại sao currying được đề xuất cho khai báo hàm OCaml trên đối số tuple? Nó chỉ là sự linh hoạt lớn hơn mà đi kèm với cho phép currying/một phần đánh giá, hoặc là có một số lợi ích khác có nguồn gốc từ các chi tiết thực hiện của trình biên dịch OCaml?
Sự lựa chọn của hầu hết các chức năng trong Caml-ánh sáng và các phiên bản tiếp theo được giải thích trong báo cáo "Thí nghiệm ZINC: thực hiện kinh tế ngôn ngữ ML". Một điều tôi nhớ là với chương trình đánh giá thích hợp (được mô tả trong báo cáo), một chức năng được thu thập không yêu cầu phân bổ để được gọi. http://caml.inria.fr/pub/papers/xleroy-zinc.ps.gz –
@PascalCuoq, trong khi tuple cần được phân bổ, giải nén và sau đó là GC? –
Có, nếu hàm này cũng có ý định được gọi với các bộ dữ liệu có sẵn ('ft'), thì không có cách nào xung quanh thực tế rằng một tuple tạm thời ngắn' (x, y) 'phải được cấp phát để áp dụng' f' đến khi cái nào chỉ có 'x' và' y'. –