Tôi muốn có một phiên bản đệ quy đuôi của List.map
, vì vậy tôi đã viết của riêng tôi. Ở đây là:Đối số tùy chọn không thể xóa được?
let rec list_map f l ?(accum=[])=
match l with
head :: tail -> list_map f tail ~accum:(head :: accum)
| [] -> accum;;
Bất cứ khi nào tôi lập chức năng này, tôi nhận được:
File "main.ml", line 69, characters 29-31:
Warning X: this optional argument cannot be erased.
Các tutorial nói rằng điều này có nghĩa rằng tôi đang cố gắng để tạo một hàm không có tham số không bắt buộc. Nhưng hàm ở trên rõ ràng nhận các đối số không bắt buộc.
Tôi có thể chỉ làm điều gì đó thực sự câm, nhưng sao?
bạn nên xem các bài viết gần đây trên danh sách gửi thư ocaml về các bản đồ đệ quy đuôi. http://groups.google.com/group/fa.caml/browse_thread/thread/8b2a70a767e6a433 – nlucaroni