On 28 February 2012 18:40, Frank Shearar <frank.shea...@gmail.com> wrote:
> On 28 February 2012 16:50, Fabrizio Perin <fabrizio.pe...@gmail.com> 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 <siguc...@gmail.com>
>>>
>>> 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