相关疑难解决方法(0)

使用列表理解的谓词自定义过滤器功能

我需要开发自己的过滤器功能,类似于filter在Haskell中的工作原理,但是要使用列表理解和谓词。因此,我将lcFilter (>3) [1,2,3,4,5,6,10,444,3]输入ghci,它将打印所有大于3的数字。

我的代码基于一个我擅长的递归示例,但我似乎无法转换为列表理解。无论我输入什么内容,[x | x<-xs, p]它都会缝在一起,始终会引发编译器错误。我知道这p部分是错误的。我已经尝试过了==pxs==p几乎可以想到的所有其他东西。这使我认为其他部分可能是错误的,但我真的不确定。

这是我的功能的代码lcFilter。我不确定是否部分或全部错误,因此我将整个过程发布。

lcFilter :: (a -> Bool) -> [a] -> [a]
lcFilter _ [] = []
lcFilter p (x:xs) = [x | x<-xs, p]
Run Code Online (Sandbox Code Playgroud)

如果输入,lcFilter (>3) [1,2,3,4,5]它应该[4,5]像标准的Haskell filter函数一样打印。

haskell list-comprehension filter higher-order-functions

3
推荐指数
1
解决办法
82
查看次数