|
|
> Not when the compiler can detect tail recursion and transform it into a
> normal loop structure automatically.
So actually, you had the same thought to start with (I want to sum all the
elements) and the end result is the same assembly code. So the only real
point is if you find writing out and thinking about the first solution
easier than the second or not. In your own words:
"3. The second version looks like some kind of a riddle. Not a hard
riddle, but a somewhat baffling definition all the same."
So why on Earth bother with the riddle in the first place?
Here's a couple of changes you can try to make to the Haskell version:
1) Modify the code so that it stores the sum up to each element in that
element.
2) Modify the code so that it sums up nodes in a tree structure, starting
from any child.
In the 1st version, it's very easy to implement. For 1) you just add:
position.sumToHere = total
in the loop.
For 2), you change the position = line to:
position = position.GetParent()
All very intuitive, requiring little modification to the sum function.
Post a reply to this message
|
|