繁体   English   中英

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

[英]How to return the first n-1 elements of a list of length n in Haskell?

我知道关于tail函数,该函数返回列表的最后n-1个元素(其中n是列表的长度),因此我定义了自己的“ cotail”函数以返回前n-1个元素:

cotail = (reverse . tail . reverse)

这是最佳方法,还是有内置函数或更巧妙的方法来实现?

正如其他人所说, init是您想要的。 但是,您可以按照以下方式回答以下问题:“是否有Haskell函数可以执行X?” 一般来说:

  1. 找出所需的函数的类型签名。 在这种情况下,我们希望类型签名为[a] -> [a]

  2. 搜索hooglehayoo 如果您找不到一个,请尝试另一个。 通常,是否正确确定输入参数的顺序并不重要,但是您可能需要进行实验。

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

我相信您正在寻找init

建议您使用init 但是您需要确定对空列表的处理方式。

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

此版本的cotail在空列表中不会失败,就像drop 1在空列表中不会失败(而tail会失败)

正是您需要的init函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM