对于[1;2;3;4;5]
,我想返回[[1;2;3;4;5];[2;3;4;5];[3;4;5;];[4;5];[5];[]]
我正在尝试使用List库,但我不确定该如何使用。到目前为止,我知道我必须使用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
尾部的列表。 - Pascal Cuoq[1..4]
不是[1..5]
的尾部。您确定您的意思不是[2..5]
等等吗? - J D