[Pharo-project] [ENH] Syntax extension for continuations

Levente Uzonyi leves at elte.hu
Mon Nov 1 04:04:19 CET 2010


On Mon, 1 Nov 2010, Igor Stasenko wrote:

> Hello,
>
> Out of curiosity, i tried to look how it would be hard to change
> parser to support extended continuation syntax.
> And it was quite simple, i had to change only single method!
>
> A new syntax using double semicolon ';;' to indicate a continuation.
>
> So, code like:
>
> self foo ;; bar ;; zork
>
> is equivalent to:
>
> self foo bar zork
>
> But when its going to binary, or keyword messages, it allows to write
> more clean code,
> because it not requires using parenthesis.
>
> For instance:
>
> (1/10) asFloat
>
> with new syntax can be written as:
>
> 1/10 ;; asFloat
>
> More complex example:
>
> ((self foo: bar) + 10 ) baz
>
> can be written as
>
> self foo: bar ;; + 10 ;; baz
>
>
> Note, that it is same number of characters to type.. but is much more
> clean, and less time expensive to code,
> because when you coding, you usually type first message:
>
> self foo: bar `
>
> and then you realising that next message is binary and hence you need
> to go back to beginning of line and put open paren there:
>
> `( self foo: bar
>
> then again, go to the end of message, and continue typing:
>
> ( self foo: bar ` ) + 10
>
> ` - is cursor position.
>
> so, it is much more keystrokes & navigation than just typing two semicolons :)
>
> P.S. don't burn me for my herecy, please :)

This idea comes up every few years. This post sums up well the last 
attempt: http://blog.3plus4.org/2007/08/30/message-chains/ .

I don't think it's worth changing the syntax for this. IMHO 1-2 pairs of 
parentheses usually improve readability. More parenthesis is rarely 
needed. Also mixing ;; with ; makes the code harder to understand. Try 
this: self foo ; bar ;; baz ; foo ;; bar ; baz.

Note that the term 'continuation' means a totally different thing: 
http://en.wikipedia.org/wiki/Continuation .


Levente

>
> -- 
> Best regards,
> Igor Stasenko AKA sig.
>




More information about the Pharo-project mailing list