List 如何返回Haskell中长度为n的列表的前n-1个元素?
我知道tail函数返回列表的最后n-1个元素(其中n是列表的长度),因此我定义了自己的“cotail”函数来返回前n-1个元素:List 如何返回Haskell中长度为n的列表的前n-1个元素?,list,haskell,tail,List,Haskell,Tail,我知道tail函数返回列表的最后n-1个元素(其中n是列表的长度),因此我定义了自己的“cotail”函数来返回前n-1个元素: cotail = (reverse . tail . reverse) 这是最好的方法,还是有内置函数或更聪明的方法来实现这一点?我相信您正在寻找。init函数正是您所需要的。正如其他人所说,init就是您所寻找的。但这里是如何回答“是否有一个Haskell函数来做X?”这样的问题的: 找出您想要的函数的类型签名是什么。在这种情况下,我们希望类型签名是[a]->[a
cotail = (reverse . tail . reverse)
这是最好的方法,还是有内置函数或更聪明的方法来实现这一点?我相信您正在寻找。init函数正是您所需要的。正如其他人所说,
init
就是您所寻找的。但这里是如何回答“是否有一个Haskell函数来做X?”这样的问题的:
[a]->[a]
刚才在Hayoo上执行此搜索时,
init
显示为我的第三个结果。使用init
,正如建议的那样。但您需要确定如何处理空列表
cotail xs = [x | x:_:_ <- tails xs]
cotail xs=[x | x:uu:uuw,“返回最后的n-1个元素”并不是一个很好的描述。通常,长度对于列表来说不是一个好的属性,因为它们可能是无限的(即使不是无限的,length
也不必要地昂贵,因为它需要遍历整个列表)“tail
返回除head
之外的所有元素。同样地,init
返回除最后一个
元素之外的所有元素。没错,但它起到了作用,即每个人都理解我的问题。太好了!我不知道这些搜索引擎,太棒了!