2011-11-10 35 views
7

Nói chung, chúng ta có thể sử dụng hàm remove.Cách tiêu chuẩn để loại bỏ phần tử khỏi danh sách trong OCaml là gì?

Dường như không có phương pháp như vậy trong OCaml?

+0

Chính xác việc xóa phải được thực hiện như thế nào? Bạn chỉ muốn ['filter'] (http://caml.inria.fr/pub/docs/manual-ocaml/libref/List.html) danh sách? (['remove'] (http://www.lispworks.com/documentation/HyperSpec/Body/f%5Frm%5Frm.htm), ít nhất theo nghĩa Lisp chung là một con thú rất đáng sợ ... bắt đầu/dãy kết thúc, số đếm, khóa và vị từ, oh my!) –

Trả lời

14

Danh sách trong OCaml là không thay đổi. Vì vậy, bạn không thể xóa mọi thứ khỏi chúng. Bạn thường tạo một danh sách khác mà không có những thứ bạn không muốn. Đối với điều này, bạn sẽ sử dụng List.filter.

Nếu bạn hoàn toàn phải có danh sách có thể thay đổi, bạn có thể. Trong Pin, có một thứ gọi là Dllist có thể giống như những gì bạn muốn. (Tuy nhiên, đây là một danh sách được liên kết gấp đôi, không giống như danh sách Lisp).

Một trong những điều tuyệt vời về OCaml, theo ý kiến ​​của tôi, đó là tập hợp con chức năng tinh khiết thực sự khá hiệu quả. Tôi chưa bao giờ cần sử dụng danh sách có thể thay đổi trong các dự án của riêng mình.

+0

Tôi hiểu. tôi nên sử dụng List.filter. –

+0

Xin chào Jeffrey, nếu tôi muốn lưu trữ một số phần tử trong một cấu trúc dữ liệu, và nó không thích hợp để viết trực tiếp một hàm đệ quy để làm điều đó? – computereasy

+0

Câu trả lời ngắn gọn: nó luôn phù hợp! :-) Câu trả lời dài hơn: bạn có thể sử dụng cấu trúc có thể thay đổi nếu bạn có lý do chính đáng. Bạn sẽ phải hỏi câu hỏi này như một câu hỏi riêng biệt, cụ thể hơn để có được câu trả lời tốt hơn. –

Các vấn đề liên quan