发出后缀(Haskell)

时间:2013-11-13 13:31:24

标签: haskell

我的意思是: 输入:后缀[“你好”] 输出:['ello','llo','lo','o']或者什么...... 开头是:

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

我认为这有点像

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

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

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

或类似的?

2 个答案:

答案 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会以递减的长度顺序返回后缀。