在Haskell中从列表中删除第一个和最后一个元素

12

我正在编写一个小函数,可以帮我去掉列表的第一个和最后一个元素。我的目标是:

>firstLast::[a]->[a]
>firstLast [x] = [ ]
>firstLast h:t = [i|i!= head[a] || i!= last[a]]

你可以看到,我在这里尝试使用列表推导式,但显然我没有正确地使用它。

1个回答

21

为什么不只是这样呢?

firstLast::[a]->[a]
firstLast [] = []
firstLast [x] = []
firstLast xs = tail (init xs)

是的..我简单地忘记了有一个叫做init的函数..谢谢! - Nob Wong
2
简化为 firstLast xs@(_:_) = tail (init xs); firstLast _ = [] - daniel gratzer
最后一行可以只写成 firstLast (x:xs) = init xs - jake-ferguson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接