Hi Nicholas,<br><br>If you use a where statement, GHC only has to compute the computation group year once, because it can be shared.<br><br>year1 [y1,y2,y3,y4x] = y1<br>year2 [y1,y2,y3,y4x] = y2<br>year3 [y1,y2,y3,y4x] = y3<br>

year4x [y1,y2,y3,y4x] = y4x<br>cow_group_sum year = sum (group year)<br><br>      --look here--<br>group 1 = [1,0,0,0]<br>group (year+1) = [year4x gy, year1 gy,year2 gy,year4x gy + year3 gy]<br>        where gy = group year<br>

<br>main = print (cow_group_sum 50)<br><br>This works a lot faster. <br><br>I don&#39;t understand why GHC doesn&#39;t pick this up.<br><br>Greets, <br><br>Edgar<br><div class="gmail_quote">On Mon, Nov 8, 2010 at 2:08 PM, nicholas.ulysses <span dir="ltr">&lt;<a href="mailto:nicholas.ulysses@gmail.com">nicholas.ulysses@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">It&#39;s my code to do some recursive things, focus on function &#39;group&#39;.<br>
<br>
---- cow.hs<br>
  year1 [y1,y2,y3,y4x] = y1<br>
  year2 [y1,y2,y3,y4x] = y2<br>
  year3 [y1,y2,y3,y4x] = y3<br>
  year4x [y1,y2,y3,y4x] = y4x<br>
  cow_group_sum year = sum (group year)<br>
<br>
  --look here--<br>
  group 1 = [1,0,0,0]<br>
  group (year+1) = [(year4x (group year)), (year1 (group year)),<br>
(year2 (group year)), ((year4x (group year)) + (year3 (group year)))]<br>
<br>
<br>
  main = print (cow_group_sum 50)<br>
---- end<br>
<br>
Every time &#39;group&#39; was called, the (group year) function was called 4<br>
times . when call (group 30), it takes tens seconds to finish.<br>
<br>
I have tried &#39;ghc -O3&#39;, but it&#39;s still &#39;lazy&#39; on this thing.<br>
<br>
Map-Reduce seems to be the answer to the question. But I want to make<br>
sure that ghc CAN or CANNOT do the Optimize for Dynamic Programming?<br>
<br>
<br>
----------------<br>
xingbo wu<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>
</blockquote></div><br>