On 28 February 2012 17:43, Igor Stasenko <[email protected]> wrote:
> On 28 February 2012 18:40, Frank Shearar <[email protected]> wrote:
>> On 28 February 2012 16:50, Fabrizio Perin <[email protected]> wrote:
>>> Hi,
>>> I think the reason is for consistency.
>>> If fact I like as it is now for that reason.
>>>
>>> $a asParser / $b asParser / #foo asParser "It looks clear to me and is
>>> consistent."
>>>
>>> a asParser / $b / #foo "it looks odd because it is inconsistent."
>>>
>>> Anyway, for such simple parsers you loose consistency and you don't gain
>>> much. If you have to deal with longer statements, if you have to make your
>>> parsers reusable or simply to make your simple example cleaner for real, you
>>> should have separate methods:
>>> a
>>> ^$a asParser
>>>
>>> b
>>> ^$b asParser
>>>
>>> foo
>>> ^#foo asParser
>>>
>>> a / b / foo " this is cleaner and consistent"
>>>
>>> I hope I made my point.
>>>
>>> Cheers,
>>> Fabrizio
>>>
>>> "Consistency, Consistency, Consistency"
>>
>> I've often used #anyOf: -
>>
>> anyOf: someTokens
>>  "Writing without a compiler; may actually still work!"
>>  ^ someTokens allButFirst
>>    inject: someTokens first
>>    into: [:acc :each | acc / each asParser]
>>
>> self anyOf: #($a $b #foo).
>>
> so, talking about consistency, where is consistency, when here you
> have implicit #asParser, while in rest methods not? :)
> maybe we should write it like that:
>
>  self anyOf: {$a asParser.  $b asParser.  #foo asParser }.
>
>  "Consistency, Consistency, Consistency"
>
> :)

Well, I do like consistency, but I wasn't the one to say "Consistency,
Consistency, Consistency" :) Still, at least #anyOf: indicates that
something's happening, so it's not like it's magically adding
#asParser. I don't have it open, but Cutie (from LanguageBoxes) has a
parser that does vaguely magical stuff to say "a / b / c", something
like a PPCompositeParser.

frank

>> frank
>>
>>> 2012/2/28 Igor Stasenko <[email protected]>
>>>>
>>>> Why i need to put #asParser everywhere?
>>>>
>>>> $a asParser / $b asParser / #foo asParser
>>>>
>>>>
>>>> a proper implementation of #/ makes the above to just:
>>>>
>>>> $a asParser / $b / #foo
>>>>
>>>> which is much more cleaner and convenient.
>>>>
>>>> Or, is there a reason to not send #asParser to every argument where
>>>> parser expected?
>>>>
>>>>
>>>> --
>>>> Best regards,
>>>> Igor Stasenko.
>>>>
>>>
>>
>
>
>
> --
> Best regards,
> Igor Stasenko.
>

Reply via email to