Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<blockquote> <p>Do any functional languages have features to encourage divide-and-conquer programming?</p> </blockquote> <p><strong>Yes:</strong> the ability to create new higher-order functions in libraries. </p> <p>One of the most important such functions, on lists anyway, is <code>foldr</code>, which can be parallelized in principle when applied to an associative operator, although this is rarely done in practice. Why? Because <code>foldr</code> is designed around sequential data flow.</p> <p>The beauty of functional languages is that once this problem is recognized, we can address the problem not by introducing new language features, but by making more intelligent use of the features we already have. To see how, look at <a href="http://research.sun.com/projects/plrg/Publications/ICFPAugust2009Steele.pdf" rel="noreferrer">Guy Steele's talk from August 2009</a>, where he explains why <code>foldr</code> is not the right library function for parallel functional programming, and he proposes</p> <ul> <li>A new programming style</li> <li>A new representation of lists</li> <li>New higher-order functions for libraries</li> </ul> <p>that are all designed to support divide-and-conquer programming.</p> <p>What I found so exciting about this talk is that <strong>it is not necessary to introduce new language features to support divide-and-conquer programming "natively".</strong> It is enough to take the primitives we already have and to use them to design better libraries.</p> <p>If you have access to the ACM Digital library you can see video of Guy's talk <a href="http://portal.acm.org/citation.cfm?id=1596550.1596551" rel="noreferrer">Organizing Functional Code For Parallel Execution</a>, or as Ben Karel points out, you can see <a href="http://www.vimeo.com/6624203" rel="noreferrer">video taken by Malcom Wallace</a> on Vimeo.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload