functional-programming - 部分应用的地图的名称是什么
问题描述
在函数式编程中,最常见的模式往往被赋予有助于区分它们的名称。
我试图找到一种函数类型的名称,我将其描述为部分应用的 map。
Python中的一个例子:
from functools import partial
seq_len = partial(map, len)
seq_len(['alpha', 'beta', 'charlie'])
我知道这些也可以描述为将序列作为输入的函数。
我认为是此类部分应用的有趣主题的一些功能是:
- 地图
- 减少
- 筛选
更多的:
- Python 使用“迭代器”名称来指代实现迭代器协议的对象。但在 itertools 中,接受序列和返回序列的函数也称为“迭代器”(https://docs.python.org/3.7/library/itertools.html)。
- JavaScript 对迭代器使用相同的定义(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators)。
- Rust 使用术语“消费适配器”来表示使用迭代器的方法,使用“迭代器适配器”来表示将输入迭代器转换为输出上不同迭代器的方法。
解决方案
术语部分应用地图意味着地图功能被部分应用。这令人困惑。
您正在寻找的一般原则是咖喱。您示例中的函数map
通常在 Python 中采用两个参数。如果你curry map(fn, list)
产生map'(fn)
然后apply map'(fn)
to len
,你会得到一个新的 function map_len()
,然后你可以应用map_len
到一个适当类型的列表中。
curry
您可以搜索函数式编程中的术语,例如compose
和apply
。
推荐阅读
- html - 单击时从顶部推送隐藏的 div
- java - maven:如何为本地安装的依赖项指定“systemPath”?
- java - Java SynchronizedCounter 无法按预期工作
- android - Android Studio 完成构建时如何获得通知?
- docker - 为什么 Docker 只在卷中挂载特定文件?
- ruby - 无法在 Linux 中构建 .NET Core 控制台应用程序
- java - Android - 如何将默认选中的复选框添加到导航抽屉
- javascript - JavaScript location.reload() 在一定时间后循环关闭同步,为什么?
- ocaml - 沙丘utop和utop的区别
- java - 无法为 Intellij Idea 中的“智能 tomcat”插件选择 tomcat