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. >
