Estoy viendo la documentación de la Lista. Parece que la biblioteca no proporciona una función sublist
.cómo obtener una lista secundaria de una lista en ocaml
Estoy tratando de obtener la lista de elementos de i a j . Ahora tengo que escribir como:
let rec sublist list i j =
if i > j then
[]
else
(List.nth list i) :: (sublist list (i+1) j)
que es bastante conciso, pero yo estoy cuestionando la eficacia de List.nth
, porque si es O (n), yo preferiría tener que escribir de una manera menos concisa camino.
Me pregunto por qué no nos proporcionaron List.sublist
func, si no es List.nth
O (1), porque es una operación bastante común ..
En realidad, me equivoqué: la evaluación no optimizada llamada por valor de la función newacct es O (longitud (l)) también, debido a la lista intermedia. Para preservar la complejidad asintótica O (e) en ML, tendrías que 'tomar' primero, luego 'soltar'. –