On 4/8/2011 3:28 PM, Karsten Ahnert wrote:
>> (Please don't top-post. Rearranging...)
> 
> Hmm, I just used reply in my mail client. (Sorry for this double)
> 
>>> Another question is: can a node have a state. In my algorithm it would
>>> be nice, if every proto::multiplies< > node stores some intermediate
>>> values which are used during later evaluations of the tree.
>>
>> No. Intermediate expression nodes carry no run-time state in their
>> nodes. They only carry compile-time information in the form of the tag.
>> That's how a plus node is distinguished from a minus node, for instance.
>>
>> If you need to compute intermediate values, you can use a transform to
>> build a parallel structure.
> 
> Do you mean to build an entire new tree, or just to replace some nodes?

If only some nodes have associated intermediate result, then you could
just replace some nodes.

> In my current algorithm I use callable contexts to do the work. I think
> this is more favorable since I have to evaluate the tree N times to obtain
> the result. 

Why does that matter? Transforms are almost always a better choice.

> I think it would be nice to replace some nodes and customizing
> the evaluation context, such that these nodes can be used to store the
> intermediates.

If you're doing calculation *and* tree transformation, then drop the
callable contexts. They can't do the job.

-- 
Eric Niebler
BoostPro Computing
http://www.boostpro.com
_______________________________________________
proto mailing list
proto@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/proto

Reply via email to