outer product -> partially applied functions -> composition
<p>I have a list of binary functions such that <code>(a -&gt; b -&gt; a)</code> and a list of items <code>[b]</code>.  I need to produce a transformation <code>(a -&gt; a)</code> as follows.  For each of the bs I need to partially apply the functions and produce their composition, which gives me a list of unary functions the same length as the bs.  Call each of these compositions a processor;  I next need to compose the processors. So for example, if I have functions <code>[f0,f1]</code> and items <code>[b0,b1]</code>, I need the function <code>(f1 b1) . (f0 b1) . (f1 b0) . (f0 b0)</code>.  I can see that I'm folding across the bs, but this also looks like a composition of an outer product.  So, does Haskell offer a clever way to produce this with some kind of outer product? (Order matters, of course.) If so, please explain in terms understandable to a complete novice.</p>