我正在查看List文檔。看起來庫不提供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))。爲了保持ML中的漸近複雜度O(e),你必須首先'取',然後'取'。 – 2010-04-27 15:48:34