Ich bin in der Liste Dokumentation. Es scheint, dass die Bibliothek keine sublist
-Funktion bereitstellt.Wie bekomme ich eine Unterliste von einer Liste in ocaml
Ich versuche, Liste der Elemente von i zu j zu bekommen. Jetzt muss ich es schreiben, wie:
let rec sublist list i j =
if i > j then
[]
else
(List.nth list i) :: (sublist list (i+1) j)
, die ganz präzise ist, aber ich bin in Frage, die Effizienz der List.nth
, denn wenn es O (n), würde ich lieber zu schreiben, um es in einem weniger prägnant Weg.
Ich frage mich, warum nicht bieten sie List.sublist
func, wenn List.nth
nicht O (1) ist, weil es so ist eine ziemlich häufige Operation ..
Eigentlich lag ich falsch: Die unoptimierte call-by-value Auswertung der newacct-Funktion ist auch O (length (l)) wegen der Zwischenliste. Um die asymptotische Komplexität O (e) in ML zu erhalten, müsste man zuerst "nehmen", dann "fallen lassen". –