功能术语:映射(SIMD)vs ??? (MISD)

时间:2014-06-06 12:33:16

标签: functional-programming terminology

鉴于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)]

第二次操作是否有普遍接受的术语?

1 个答案:

答案 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>。但是现在你知道你可以通过正确的方式改变这种关系!