我的意思是:输入:后缀 ["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]
或类似的?
我的意思是:输入:后缀 ["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]
或类似的?
tails
fromData.List
会做你想做的事。
tails "hello"
--["hello", "ello", "llo", "lo", "o", ""]--
看起来你不想要第一个元素,所以你可以drop 1
。
Data.List.tails
可用于获取另一个列表的所有后缀的列表,并且可以用于drop 1
删除输出列表的第一个元素:
import Data.List
suffixes = drop 1 . tails
如果你想要前缀,你可以使用Data.List.inits
. 请注意,这会以递增顺序或长度返回前缀,而tails
以递减长度顺序返回后缀。