Boost logo

Proto :

Subject: Re: [proto] Visitor Design Pattern
From: Thomas Heller (thom.heller_at_[hidden])
Date: 2010-10-25 07:44:38


On Mon, Oct 25, 2010 at 11:57 AM, Joel de Guzman
<joel_at_[hidden]> wrote:
> On 10/25/2010 12:39 PM, Eric Niebler wrote:
>>
>> On 10/24/2010 8:32 PM, Joel de Guzman wrote:
>>>
>>> On 10/25/2010 8:49 AM, Eric Niebler wrote:
>>>>
>>>> Like "visitor", "actor" comes with lots of baggage that we don't want:
>>>>
>>>>    http://en.wikipedia.org/wiki/Actor_model
>>>>
>>>> Besides, as these things define algorithms, a name that's a verb would
>>>> be better (std::transform, std::accumulate, etc. are verbs).
>>>
>>> That's a totally different synonym. The actor that I meant is
>>> connected to the meaning of "semantic action" and you are using
>>> action/actions anyway (as well as grammars and rules). It's the
>>> same domain.
>>
>> Oh. I didn't make the connection between "actor" and "semantic action".
>> For me, "actor" is so strongly evocative of concurrent programming that
>> I can't read it any other way.
>
> It's the name we use in Spirit for objects that dispatch semantic
> actions. What does an actor do: it executes an action for a
> particular sub-rule (node).
>
>>>> How about "evaluate":
>>>>
>>>>    proto::evaluate<char_terminal, my_actions>()(a);
>>>
>>> Hmmm... :P
>>
>> You're not loving that, either, are you? evaluate_with? with_actions?
>> <shrug>  They're all terrible. I won't bother the list any more with
>> naming issues. Thanks to everybody who contributed ideas to the design
>> of the-yet-to-be-named-thingie. Especial Thomas.
>
> evaluate or eval in short is ok. I don't dislike it but
> it's not at the top of my list.
>
> Ditto, that's it for me. naming is only productive until a
> specific point. After that, it becomes a bike-shed issue.
> Any name from our list will do just fine. What's important is
> that you've done an amazing work under the hood. So, kudos
> to you and Thomas! hats off, sirs!

Thank you very much! So, we are good to changing the internals of
phoenix3 to use this extension mechanism?
Regarding naming ....
I like renaming phoenix::actor to phoenix::lambda. But what about the existing
 phoenix::lambda? Rename it to protect (from Boost.Lambda)?


Proto list run by eric at boostpro.com