的尾巴名單對於[1;2;3;4;5]
,我想回到[[1;2;3;4;5];[2;3;4;5];[3;4;5;];[4;5];[5];[]]
OCaml的 - 返回一個包含該列表
我試圖使用列表庫,但我不能確定如何。到目前爲止,我知道我必須使用List.tl獲取列表而不第一個元素
let rec tailsoflist (l : 'a list) : 'a list list =
match l with
[] -> [[]]
| x::xs -> l::(tails xs)
我這樣做遞歸,但現在我只想使用列表庫,而無需使用遞歸。
let tails (l : 'a list) : 'a list list
編輯:對不起,我指定的函數返回的是不正確的。剛剛更新了正確的輸出。
在模塊'List'中沒有函數會將列表'l'的尾部呈現給您傳遞它的函數,因此您不能擁有「l'的尾部」。如果您接受構建它們的新版本,例如使用'List.fold_right',您可以在結構上與'l'的尾部相當的列表。 – 2011-04-13 16:22:58
請注意,根據您的問題,您構成問題的示例解決方案不正確,例如, '[1..4]'不是'[1..5]'的尾部。你確定你不是指[2..5]等嗎? – 2011-04-13 17:24:58
@Pascal:沒有必要放棄共享尾巴:只需將原始列表作爲「fold」的一部分。 – 2011-04-19 15:06:23