----- Original Message ---- From: Igor Stasenko siguctua@gmail.com To: The general-purpose Squeak developers list squeak-dev@lists.squeakfoundation.org Sent: Thursday, August 30, 2007 11:15:14 AM Subject: Re: Pipe syntax and the current methods
On 30/08/2007, Yoshiki Ohshima yoshiki@squeakland.org wrote:
Hello,
Since Pipes makes Smalltalk better at prototyping, Pipes gives me a sharper pencil.
I think I know a part of your frustration. When you are trying make the idea rendered into the first cut of code, you really don't want to move the cursor back in the characters you typed and insert some other stuff just to make it compile and do something.
Another approach to solve this problem is to make the editor smarter. I could imagine to have a some command-key sequence that puts open and close parenthesis around the *last* expression. The definition of the "last" expression may need a clarification but it almost sounds like "right before the last statement separater ($.)" would be good. With it, if you type:
aCollection select: [:each | each isSomething]
and then realize that you actually want to continue to write collect:, then you press a key combination and it enclose the above expression with $( and $). In this way, you don't have to change the language.
For this kind of stuff, having three different precedence in message sending is basically two too many. That is why the lisp-mode in Emacs shines more than any other modes. But for Smalltalk-80 syntax, it wouldn't be too bad.
And then the only thing you need is to implant a chip into your brain to be able read code with many (...) fast :)
You already have one of those chips. They call that your nose and it is for smelling nasty, nasty code smells. It doesn't matter if you are using () or |, they both smell when used excessively. Refactor!
Do something crazy like defining a StackFilter, where you can push expressions into a stack and apply it to an underlying collection. It would compute the filtered value whenever the underlying collection changes. Something like this would be a more OO approach, I would think. Think like an object and not a function. :)
cheers, Rob
squeak-dev@lists.squeakfoundation.org