Tôi đang xem tài liệu Danh sách. Dường như thư viện không cung cấp chức năng sublist
.cách lấy danh sách phụ từ danh sách trong ocaml
Tôi đang cố gắng lấy danh sách các phần tử từ i đến j. Bây giờ tôi phải viết nó như:
let rec sublist list i j =
if i > j then
[]
else
(List.nth list i) :: (sublist list (i+1) j)
đó là khá ngắn gọn nhưng tôi đặt câu hỏi về hiệu quả của List.nth
, bởi vì nếu nó O (n), tôi thà phải viết nó trong một ít ngắn gọn đường.
Tôi đang tự hỏi tại sao họ không cung cấp List.sublist
func, nếu List.nth
không phải là O (1), bởi vì đó là một hoạt động khá phổ biến như vậy ..
Thực ra, tôi đã sai: đánh giá giá trị theo hàm giá trị chưa được tối ưu hóa của hàm newacct cũng là O (độ dài (l)), vì danh sách trung gian. Để bảo toàn độ phức tạp tiệm cận O (e) trong ML, bạn sẽ phải 'lấy' trước tiên, sau đó' thả'. –