Я ищу документацию Список. Кажется, библиотека не предоставляет функцию sublist
.Как получить дополнительный список из списка в ocaml
Я пытаюсь получить список элементов от i до j. Теперь я должен написать:
let rec sublist list i j =
if i > j then
[]
else
(List.nth list i) :: (sublist list (i+1) j)
который довольно кратким, но я под сомнение эффективность List.nth
, потому что если это O (N), я предпочел бы, чтобы написать его в менее кратким путь.
мне интересно, почему они не дают List.sublist
FUNC, если List.nth
не O (1), потому что это такая довольно распространенная операция ..
На самом деле я ошибался: неоптимизированная оценка по методу newacct равна O (length (l)) из-за промежуточного списка. Чтобы сохранить асимптотическую сложность O (e) в ML, вам придется сначала «взять», затем «drop». –