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"
:)
> 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.