鉴于map
通常意味着在许多值(f(x)
)之间应用给定函数([a,b,c,d]
)(类似于单指令多数据架构),相反可能是单值(a
)应用于多个函数(f(x),g(x),h(x)
),类似于多指令单数据架构。
map(f,[a,b,c,d]) => [f(a),f(b),f(c),f(d)]
???([f,g,h],a) => [f(a),g(a),h(a)]
第二次操作是否有普遍接受的术语?
答案 0 :(得分:2)
它实际上是相同的操作,即map
。但是,由于您必须在 a
映射应用程序,而不是 f
的应用程序,因此您需要一个lambda:
misd([f,g,h],a) == map(lambda op. op a, [f,g,h])
如果所讨论的语言具有“应用程序运算符”并支持部分应用程序(如Haskell),则可以简化此操作(explanation):
map ($a) [f, g, h]
现在,对于你提出的条款:我不知道它们,并认为对于一种功能性语言,它们没有意义被引入。请记住,FP的关键标准之一是函数(=指令)是数据。模糊“指令”和“数据”之间的区别,不需要区分多个数据和多个指令,因为它们最终是相同的。
当然,这仅仅是抽象意义上的。如果你正在进行并行化,那么这些术语当然在它们的常规含义中仍然有用,当它区分什么是应用和应用时 EM>。但是现在你知道你可以通过正确的方式改变这种关系!