【发布时间】:2016-05-11 14:20:00
【问题描述】:
我有一个二进制函数列表,例如(a -> b -> a) 和一个项目列表[b]。我需要产生一个转换(a -> a),如下所示。对于每个 bs,我需要部分应用函数并生成它们的组合,这给了我一个与 bs 长度相同的一元函数列表。将这些组合中的每一个称为处理器;接下来我需要组成处理器。例如,如果我有函数[f0,f1] 和项目[b0,b1],我需要函数(f1 b1) . (f0 b1) . (f1 b0) . (f0 b0)。我可以看到我正在折叠 bs,但这看起来也像是一个外部产品的组合。那么,Haskell 是否提供了一种巧妙的方法来使用某种外部产品来生产它? (当然,顺序很重要。)如果是这样,请用完全新手可以理解的术语进行解释。
【问题讨论】:
-
我说看看
<*>inControl.Applicative。 -
你想如何确定构图的顺序?您举了一个长度为 2 的列表的示例,但是 3、4...应该是什么?
标签: haskell