haskell - 无点样式和部分应用函数
问题描述
在 Haskell 中有两个概念看起来并不相同,但我不明白它们的区别。它们是“无点风格”和“部分应用函数”。
对于无点样式,我将获得以下示例:
instead of: sum xs = foldr (+) 0 xs
we can use: sum = foldr (+) 0
因为xs
是两边我们可以省略它。
对于部分应用的功能,我将得到这个例子:
increment = add 1
这可能是increment n = add 1 n
,因为在调用它的那一刻,您需要使用参数来执行它,就像第一个示例一样。
那么,它们之间的真正区别是什么?
但是,对我来说,最后都是一样的。
解决方案
Pointfree style - 函数实现的一种风格
部分应用函数 - 它是一种创建新函数的技术
Point-free 使用部分应用函数,但还有其他技术和组合器https://wiki.haskell.org/Pointfree
另一种常见的无点技术是函数组合
plus2 = increment . increment
推荐阅读
- ios - 如何获得旧的 Xcode beta 版本?
- ros - 使用具有负差异的 ROS stereo_image_proc 的问题
- performance - Python - 将 GridSearchCV 与 NLTK 一起使用
- node.js - Node js 应该解析 curl 数组
- excel - Google 表格:Vlookup 和 IF 条件
- sql - 缺少关键字 (ORA-00905) - 错误 SQL:ORA-00905
- ms-word - SearchOptions 使用 Word 的序列号 - MS Office Word Addin OfficeJS
- c# - c# WPF TextBox 按索引检索行时的错误?
- javascript - 为什么我的 viewModel 在 HTML 中更新,而不是在我的 javascript 中?
- angular - Angular 创建一个 SELECT 分组选项