> suffixes :: [a] -> [[a]]
> suffixes [] = []
我认为这有点像
> drop (n+1) (x:xs) = drop n xs
> drop _ xs = xs
但是在这里我想省略“幸存”列表的第一个元素。怎么开始? 也许
> suffixes as = [as!!2:xs]
或类似的?
答案 0 :(得分:5)
tails
的 Data.List
会做你想做的事。
tails "hello"
--["hello", "ello", "llo", "lo", "o", ""]--
好像你不想要第一个元素,所以你可以drop 1
。
答案 1 :(得分:4)
Data.List.tails
可用于获取另一个列表的所有后缀列表,您可以使用drop 1
删除输出列表的第一个元素:
import Data.List
suffixes = drop 1 . tails
如果您需要前缀,可以使用Data.List.inits
。请注意,这会以递增的顺序或长度返回前缀,而tails
会以递减的长度顺序返回后缀。