<div dir="ltr">Thanks.<div>You've given me a good exercise in equational reasoning.</div><div><br></div><div>I'm studying such things because I might start studying combinatory logic (Smullyan's mockingbird book) soon.</div><div>It's a good exercise for the mind, and is very enjoyable with pencil & paper.</div><div>Can you give me some more patterns like transducers (foldl foldl) and the dot-dot-dot ( boobies, in your words :) ) example?</div><div><br></div><div>Thanks once again.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 24 February 2015 at 08:57, Michael Orlitzky <span dir="ltr"><<a href="mailto:michael@orlitzky.com" target="_blank">michael@orlitzky.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 02/23/2015 10:11 PM, Sumit Sahrawat, Maths & Computing, IIT (BHU) wrote:<br>
> Hi everyone,<br>
><br>
> I defined a function for discrete convolution, i.e<br>
><br>
>     conv xs = sum . zipWith (*) xs . reverse<br>
><br>
> And I was wondering, can it be done without explicitly passing in the xs<br>
> (eta-reduction)?<br>
<br>
</span>Ehhhhhhhhhh this will work:<br>
<br>
  conv = (sum .) . (. reverse) . zipWith (*)<br>
<br>
But it's so much easier to understand without all the boobies operators:<br>
<br>
  conv xs ys = sum $ zipWith (*) xs (reverse ys)<br>
<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div>Regards</div><div dir="ltr"><div><br></div><div>Sumit Sahrawat</div></div></div></div></div></div></div>
</div>