haskell - Haskell 高阶滤波函数
问题描述
filter :: (a -> Bool) -> [a] -> [a]
filter (\x -> x % 2 == 0) [1,2,3,4,5]
我已经编写了上面的代码。我想从列表中获取满足布尔表达式 x % 2 == 0 条件的列表匿名数字返回数字
当我运行此代码时,出现错误
解析错误:顶层的裸表达式也许您打算使用 TemplateHaskell
作为haskell的新手,我不知道该怎么做
解决方案
摆脱类型签名(filter
已定义)并使用调用来定义新变量。
even_numbers = filter (\x -> x % 2 == 0) [1,2,3,4,5]
(顺便说一下,even
是预定义的;你可以只写filter even [1,2,3,4,5]
。)
如果您尝试定义硬编码谓词的新版本filter
:
even_numbers :: [a] -> [a]
even_numbers xs = filter even xs
推荐阅读
- jpa - 在无状态 EJB Bean 中检索 EnityManagerFactory 的问题
- c++ - 在 C 中重塑张量
- javascript - Chrome 扩展,添加监听器无响应
- javascript - Ajax 发布 FormData 和表单
- android - 如何从 RecyclerView 清理数据侦听器/订阅?
- mongodb - 在 kubernetes 中部署 MongoDB 不会创建 pod/services
- ios - Swapping rootViewController on UIWindow does not deallocate view controller
- bash - 如何在 rsync 命令上获得空运行状态
- here-api - REST vs Android API
- java - Eclipse Maven 项目和 GIT