<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sat, Jun 7, 2014 at 8:40 AM, Erik Price <span dir="ltr"><<a href="mailto:erikprice@gmail.com" target="_blank">erikprice@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class=""><br><br>On Saturday, June 7, 2014, Richard Seldon <<a href="mailto:arcseldon@gmail.com" target="_blank">arcseldon@gmail.com</a>> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Hello,<br>
<br>
I have a general question, not specific to Haskell although I am learning Haskell as I ask this question..<br>
<br>
Please can someone provide consensus on the most important functional methods in their view.<br>
<br>
I read somewhere that having map, reduce, filter, mergeAll, and zip pretty much means everything else can be derived.</blockquote><div><br></div></div><div>You might be interested in reading this excellent introductory article on folds, which are Haskell's equivalent to what some languages call reduce:</div>

<div><br></div><div><a href="http://www.cs.nott.ac.uk/~gmh/fold.pdf" target="_blank">http://www.cs.nott.ac.uk/~gmh/fold.pdf</a><br></div><div><br></div><div>It shows how many of the basic higher-order functions (such as map, filter, etc) can be derived from a fold.</div>
<span class=""><font color="#888888">
<div><br></div><div>e<span></span></div>
</font></span></blockquote><div><br></div><div>In fact, concatMap (flatMap) is defined like so:</div><div><br></div><div><pre style="color:rgb(0,0,0)"><span class="" style="color:green">-- | Map a function over a list and concatenate the results.</span>
<a name="line-529"></a><span class="">concatMap</span>               <span class="" style="color:red">::</span> <span class="" style="color:red">(</span><span class="">a</span> <span class="" style="color:red">-></span> <span class="" style="color:red">[</span><span class="">b</span><span class="" style="color:red">]</span><span class="" style="color:red">)</span> <span class="" style="color:red">-></span> <span class="" style="color:red">[</span><span class="">a</span><span class="" style="color:red">]</span> <span class="" style="color:red">-></span> <span class="" style="color:red">[</span><span class="">b</span><span class="" style="color:red">]</span>
<a name="line-530"></a><span class="">concatMap</span> <span class="">f</span>             <span class="" style="color:red">=</span>  <span class="">foldr</span> <span class="" style="color:red">(</span><span class="" style="color:red">(</span><span class="">++</span><span class="" style="color:red">)</span> <span class="">.</span> <span class="">f</span><span class="" style="color:red">)</span> <span class="">[]</span></pre>
</div></div></div></div>