For those who care, my opinions on this subject:
1) I once proposed the idea of pipes (I don't like the name pipe and didn't use it) so I am obviously biased in favor of pipes and am confident that, once implemented, pipes will gain popular acceptance. Nevertheless, I think it would be irresponsible to just add pipes to Squeak. I suggest, instead, that the next release of Squeak be paired with an experimental version containing pipes that people can play with. The experimental version release will be delayed by the amount of time needed to implement the pipe operator and use it in a few conspicuous places.
2) I am not worried about Squeak becoming too different from other versions of Smalltalk. If the pipe operator is as successful as I expect it to be then the other versions of Smalltalk will eventually adopt it as well. Then this issue will go away. In fact, perhaps this discussion should be occurring with the entire Smalltalk community.
3) I am against the use of ;; as the pipe operator. It will have all the same problems as = vs. == in C. ; and ;; are similar enough to be mistyped and it will be difficult to find the problem once the typo is made. I much prefer :: or even :-:. Beginners may have problems remembering which is which between ; and ;;.
4) I think we need to review the current code in Squeak to find examples where the pipe operator can be used. One should note that this is not simply a matter of finding places where lots of parentheses are used. Often, instead, the coder has avoided using excessing parentheses by introducing temporary variables. Thus, there may be places in the code where:
| a b c ... | ... a := expression1. b := a expression2. c := b expression3
can be replaced by:
| c ... | ... c := expression1 :-: expression2 :-: expression3.
Finding all the places where such code can be cleaned up will not be easy and have to be done gradually once the pipe operator has been accepted.
5) I don't like the 'then' or 'and_then' name for the pipe operator. To me these names sound more appropriate for the cascade operator. How about 'ForwardResult' or 'ForwardResultTo' or just 'ForwardTo' as the name for the operator. Too bad we can't use 'Cascade'.
Ralph Boland
squeak-dev@lists.squeakfoundation.org