Tôi cố gắng để thực hiện một chức năng hẹn giờ generic trong OCaml sẽ diễn như là đầu vào một chức năng của arity tùy ý và kiểu trả về 'r và trả về một chức năng với:generic chức năng hẹn giờ theo đơn đặt hàng cao trong OCaml
- các arity cùng và các loại đầu vào thông số , và
- trở lại loại
float * 'r
nơi phao sẽ là một thước đo của thời gian dành cho chức năng (ví dụ như báo cáo củaSys.time()
)
Vấn đề là tôi không thể thực hiện nó theo cách mà nó có thể xử lý các chức năng của bất kỳ điều gì. Ví dụ. đoạn mã sau:
let timer f = let timerf x y = let t0 = Sys.time() in let result = f x y in let diff = Sys.time() -. t0 in diff, result in timerf
chỉ hoạt động với các chức năng của nguyên tử đầu vào 2. Tôi không hiểu rõ cách xử lý các chức năng của bất kỳ nguyên tử nào. Tôi đã hy vọng các ứng dụng chức năng một phần bằng cách nào đó sẽ giải quyết một cách kỳ diệu câu hỏi hóc búa nhưng tôi không thể làm cho nó hoạt động được.
Nếu bạn biết rằng hàm không làm bất cứ điều gì thú vị khi áp dụng một phần (giống như hầu hết các hàm) thì bạn thậm chí không cần sự trừu tượng. Nó đủ để gọi 'timer (g x1 x2 ... xN-1) xN'. –
@AndreasRossberg: Cảm ơn, tôi đã kết hợp ý kiến của bạn vào câu trả lời của tôi. – pad