0

我的意思是:输入:后缀 ["Hello"] 输出:['ello','llo','lo','o'] 什么的..开头是:

> suffixes :: [a] -> [[a]]
> suffixes [] = []

我觉得有点像

> drop (n+1) (x:xs) = drop n xs
> drop _ xs = xs

但是在这里我想总是省略“幸存”列表的第一个元素。如何开始?也许

> suffixes as = [as!!2:xs] 

或类似的?

4

2 回答 2

5

tailsfromData.List会做你想做的事。

tails "hello"
--["hello", "ello", "llo", "lo", "o", ""]--

看起来你不想要第一个元素,所以你可以drop 1

于 2013-11-13T13:37:12.110 回答
4

Data.List.tails可用于获取另一个列表的所有后缀的列表,并且可以用于drop 1删除输出列表的第一个元素:

import Data.List
suffixes = drop 1 . tails

如果你想要前缀,你可以使用Data.List.inits. 请注意,这会以递增顺序或长度返回前缀,而tails以递减长度顺序返回后缀。

于 2013-11-13T13:37:29.403 回答