
On Tue, Aug 17, 2010 at 8:39 PM, Travis Erdman
calcTree (Node oldData oldsubtree) input = Node newData recurseChildren where {-calculate newData from oldData and input-} recurseChildren = if {BOOLEANS} then oldsubtree else map (\old -> calcTree old input) oldsubtree
And, in words: if certain conditions become true, there will be no change in any decedent node from the current node (ie all newData = oldData, and tree structure never changes), so rather than waste exponential time traversing all the decedent nodes, I'd like to just re-use the ones I already have, as they are identical. This is "pruning" the tree. If I remove this pruning, the "<<LOOP>>" objection ceases and the code executes as expected ... except it takes lots longer than it should, because there are usually lots of oppt'ys for pruning, and I'd rather not explicitly traverse all of them.
How can I make this work?
Perhaps in your {BOOLEANS} you are referring to 'recurseChildren', which in turn needs the {BOOLEANS}? HTH! -- Felipe.