FP语言:从列表中删除空列表

时间:2013-03-20 18:12:55

标签: functional-programming

假设我有序列<1,<>,2,<>>

我怎样才能删除空列表并获取<1,2>? 理想情况下,不使用递归或迭代。

感谢。

PS:我正在使用FP programming language

1 个答案:

答案 0 :(得分:0)

您可能正在寻找的是filter。它需要一个谓词,并取出不满足它的元素。

由于FP语言有一个奇怪的语法,我找不到任何文档,我无法提供filter的实现。但总的来说,它可以使用fold来实现 - 这只是您提供的链接中的insert

这就是我的意思(在Haskell中):

filter p list = foldr (\x xs -> if p x then x:xs else xs) [] list¹

如果您没有这样做,请查看here。撰写filter后,您可以将其称为

newList = filter notEmpty theList

(其中nonEmpty是谓词或lambda)。哦,当然这只是通过使用另一个函数来隐藏递归;在某些时候,你来递减。

¹:Haskell中的:运算符是列表consing(将元素附加到头部),而不是函数应用程序。