I usually go with<div><br></div><div>&gt; (f1 .) . f2</div><div><br></div><div>Which makes the solution for the particular example:</div><div><br></div><div>&gt; sumOfProducts = (sum .) . zipWith (*)</div><div><br></div><div>

But if you want the operator that achieves this effect for arbitrary functions,</div><div><br></div><div>&gt; ((.) (.) (.))</div><div><br></div><div>does the trick. Or, if SKI is your thing, you might also try</div><div>
<br>
</div><div>&gt; (ap (const ap) (ap (const const) (ap (const ap) const)))</div><div><br></div><div>but I don&#39;t usually do it that way unless I&#39;m feeling particularly perverse.</div><div><br></div><div><br><div class="gmail_quote">

On Thu, Jul 2, 2009 at 11:54 AM, Britt Anderson <span dir="ltr">&lt;<a href="mailto:britt@uwaterloo.ca">britt@uwaterloo.ca</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">





<div bgcolor="#ffffff" text="#000000">
<font size="+1">I would like to write a function that takes two lists
of numbers and returns a number. For simplicity, let&#39;s assume an
integer, i.e.<br>
myfunc:: [Integer]-&gt;[Integer]-&gt;Integer<br>
But I can&#39;t quite get things right when trying to <br>
define myfunc = ...<br>
 and making the arguments implicit.<br>
<br>
My difficulty might be seen with the following two functions,<br>
let,<br>
<br>
f1 = (zipWith ($)) . (map  (*)) <br>
<br>
f2 = sum<br>
<br>
<br>
if I set the types such that f1 returns [Integer] and sum accepts
[Integer] it seems that somehow I should be able to compose them in to
a single function that takes two lists and returns the number, but f1 .
f2 and numerous variations don&#39;t work. I can curry some list l and f1 .
(f2 l) works, but is there a way to get f1 and f2 combined into a
function that accepts two lists? <br>
<br>
<br>
My problem is not really about writing the function but about
composition. I can write the function with arguments or a local lambda 
that suits my practical purpose. But the fact that I think I should be
able to compose f1 . f2 somehow reveals a conceptual misunderstanding
that I hope someone will help me clear up.<br>
<br>
Thank you,<br>
Britt Anderson<br>
</font>
</div>

<br>_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/beginners" target="_blank">http://www.haskell.org/mailman/listinfo/beginners</a><br>
<br></blockquote></div><br></div>