haskell - 在 Haskell 中使函数更短

标签 haskell

是否可以取消此函数中的变量 x?:

numocc x = map (length.filter(==x))

例如,如果我有这个功能:

numocc x l = map (countt x) l

我可以去掉变量 l 并得到这个:

numocc x = map (countt x)

感谢您的帮助。

最佳答案

您可以使用“pointfree”程序来回答这样的问题

> pointfree "numocc x = map (length . filter (==x))"

numocc = map . (length .) . filter . (==)
<小时/>

编辑

这是在行动

> let numocc x = map (length . filter (==x))
> let numocc' = map . (length .) . filter . (==)

numocc 'a' ["aa", "bb"] --outputs [2, 0]
numocc' 'a' ["aa", "bb"] --also outputs [2, 0]

基本上,它计算 param2 列表项中每个元素中 param1 的数量

numocc 'a' ["aa", "bba"] --outputs [2, 1]
numocc' 'a' ["aa", "bba"] --also outputs [2, 1]

关于haskell - 在 Haskell 中使函数更短,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27501051/

相关文章:

scala - 构造函数应用程序列表

haskell - 使用 Yesod.Auth.Email 自定义注册表单

algorithm - 确定 Int 是否为 Haskell 中的完美正方形的方法是什么?

HaskellDB - 'Database' 变量不在范围内

haskell - 为什么 GHC 每个线程都有一个堆栈?

css - 如何相对化 Hakyll 中 css 文件中的 URL?

haskell - 为什么repa数组没有mapM?

json - 编码 JSON 对象时如何避免使用引号

list - 尝试创建一个函数,该函数接受一个列表并返回与其第一个元素相同的所有元素的列表,但我的函数不起作用

haskell - 如何在 Haskell 中捕获任意异常?