如何在Haskell中返回长度为n的列表的前n-1个元素?

时间:2014-03-27 11:04:32

标签: list haskell tail

我知道tail函数返回列表的最后n-1个元素(其中n是列表的长度),所以我定义了自己的“cotail”函数来返回前n-1个元素: / p>

cotail = (reverse . tail . reverse)

这是最好的方法,还是有内置功能或更聪明的方法来实现这一目标?

4 个答案:

答案 0 :(得分:7)

正如其他人所说,init是您正在寻找的。但是这里是你如何回答表格的问题"是否有一个Haskell功能来做X?"总的来说:

  1. 找出你想要的函数的类型签名是什么。在这种情况下,我们希望类型签名为[a] -> [a]

  2. 搜索hooglehayoo。如果你没有找到它,请尝试另一个。通常,输入参数的顺序是否恰到好处并不重要,但您可能需要进行试验。

  3. 刚刚在Hayoo上进行此搜索,init显示为我的第三个结果。

答案 1 :(得分:5)

我相信你正在寻找init

答案 2 :(得分:1)

按照建议使用init。但是你需要确定你用空列表做什么。

cotail xs = [x | x:_:_ <- tails xs]

此版本的cotail在空列表上不会失败,例如drop 1在空列表上不会失败(而tail会失败)

答案 3 :(得分:0)

init函数,它完全符合您的需要。