pipe

Joshua Gargus schwa at fastmail.us
Sun Aug 26 20:01:21 UTC 2007


On Aug 26, 2007, at 12:54 PM, Joshua Gargus wrote:

>
> On Aug 25, 2007, at 2:57 PM, Fabio Filasieno wrote:
>
>>
>> db getBlogposts
>>     | filter: [ :blogPost | blogPost data < (today - 7 days)]
>>     | filter: [ :blogPost | db coolPosts includes: item )]
>>     | collectMails
>>     | do: [ :mail | "Happy to announce ..."]
>
> Thanks for the example.  This is a very clean looking bit of code.   
> However, as others have noted, it's not fair to conclude that  
> you've won the argument after comparing it to:
> ((((db getBlogposts) filter: [ :blogPost | blogPost data < (today -  
> 7 days)]) filter: [ :blogPost | db coolPosts includes: item )])  
> collectMails ) do: [ :mail | "Happy to announce ..."]
>
> You can format the above so that it is very close to your example:
> ((((db getBlogposts
> 	) filter: [ :blogPost | blogPost data < (today - 7 days)]
> 	) filter: [ :blogPost | db coolPosts includes: item )]
> 	) collectMails
> 	) do: [ :mail | "Happy to announce ..."]
>
> In my opinion, your code looks nicer for two reasons.  You don't  
> need the initial parentheses, and '|' looks nicer to me than ')'.   
> However, it's been established that '|' is not available, so I  
> tried out your example with some of the other proposals from the  
> thread.
>
> db getBlogposts
> 	` filter: [ :blogPost | blogPost data < (today - 7 days)]
> 	` filter: [ :blogPost | db coolPosts includes: item )]
> 	` collectMails
> 	` do: [ :mail | "Happy to announce ..."]
>
> db getBlogposts
> 	$ filter: [ :blogPost | blogPost data < (today - 7 days)]
> 	$ filter: [ :blogPost | db coolPosts includes: item )]
> 	$ collectMails
> 	$ do: [ :mail | "Happy to announce ..."]
>
> db getBlogposts
> 	;; filter: [ :blogPost | blogPost data < (today - 7 days)]
> 	;; filter: [ :blogPost | db coolPosts includes: item )]
> 	;; collectMails
> 	;; do: [ :mail | "Happy to announce ..."]
>
> The backtick is perhaps the cleanest-looking alternative, and it  
> doesn't have any conflicting associations with other Smalltalk syntax.
>
> I don't like '$' very much... it looks very "heavy", and it looks a  
> lot like a character literal even though it has nothing to do with  
> them.  I'm not sure how much we benefit by looking familiar to  
> Haskell programmers.  <ducks and covers...>  Probably not as much  
> as by adopting Java syntax to be familiar to the curly-brace  
> crowd ;-) .
>
> My favorite is ';;'.  Most importantly, it shares both visual and  
> semantic similarity with the cascade operator, since both operators  
> affect the receiver of the subsequent message.  Also, IMHO it looks  
> quite clean.

Oops, I forgot about '!'...

db getBlogPosts
	! filter: [ :blogPost | blogPost data < (today - 7 days)]
	! filter: [ :blogPost | db coolPosts includes: item )]
	! collectMails
	! do: [ :mail | "Happy to announce ..."]

This falls in to the same category as the backtick, although  
personally I don't like it as much visually.

I still like ';;' best.

Josh


>
> Josh
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20070826/13db3b22/attachment.htm


More information about the Squeak-dev mailing list