Functional programming 功能术语:映射(SIMD)与???(MISD)

Functional programming 功能术语:映射(SIMD)与???(MISD),functional-programming,terminology,Functional Programming,Terminology,考虑到map通常意味着将给定函数(f(x))应用于多个值([a,b,c,d])(类似于单指令多数据体系结构),相反的可能是应用于多个函数(f(x),g(x),h(x))的单个值(a),类似于多指令单数据体系结构 map(f,[a,b,c,d]) => [f(a),f(b),f(c),f(d)] ???([f,g,h],a) => [f(a),g(a),h(a)] 第二个操作是否有一个公认的术语?它实际上是相同的操作,即映射。但是,由于必须将应用程序映射到a,而不是f的应用程序,因

考虑到
map
通常意味着将给定函数(
f(x)
)应用于多个值(
[a,b,c,d]
)(类似于单指令多数据体系结构),相反的可能是应用于多个函数(
f(x),g(x),h(x)
)的单个值(
a
),类似于多指令单数据体系结构

map(f,[a,b,c,d]) => [f(a),f(b),f(c),f(d)]

???([f,g,h],a) => [f(a),g(a),h(a)]

第二个操作是否有一个公认的术语?

它实际上是相同的操作,即
映射。但是,由于必须将应用程序映射到
a
,而不是
f
的应用程序,因此需要lambda:

misd([f,g,h],a) == map(lambda op. op a, [f,g,h])
如果所讨论的语言有一个“应用程序操作符”,并且支持部分应用程序,如Haskell,则可以简化此操作():

现在,对于您提出的术语:我不知道它们,并且认为对于函数式语言来说,引入它们是没有意义的。记住,FP的一个关键标准是函数(=指令)是数据。模糊了“指令”和“数据”之间的区别,没有必要区分多个数据和多个指令,因为它们最终是相同的

当然,这只在抽象意义上成立。如果您要研究并行性,那么这些术语在其常规意义上当然仍然有用,因为它们有助于区分将要应用的内容和将要应用的操作。但现在你知道,只要有正确的方法,你可以扭转这种关系

map ($a) [f, g, h]