[Python-Dev] Extended Function syntax (original) (raw)

Samuele Pedroni pedronis@bluewin.ch
Mon, 3 Feb 2003 13:05:09 +0100


From: "Guido van Rossum" <guido@python.org>

> > with myfile = autoclosingfile('blah.txt', 'rb'): > > for line in myfile: > > ... > > > > With Guido's 'do', you could define an iterclose(): > > > > do iterclose(open('blah.txt','rb')): (line): > > ... > > > > Btw, the two snippets illustrate quite well the different > > evolutive directions' on the table. > > I must say that, for this particular usage at least, I find > the first one a darn sight easier to follow than the second!

I think 'do' is being misrepresented,

OK, to be even more fair, obviously do can be used to implement with

class with: def init(self,wobj): self.wobj = wobj

def call(self,thunk): if hasattr(wobj,'enter'): wobj.enter() try: thunk(wobj) finally: wobj.exit()

do with(auto_closing_file('blah.txt', 'rb')): (myfile): # bad that is not meaningful: do myfile=with(...): for line in myfile: ...

FURTHER 'do' is more expressive than generators because it allows to capture and abstract 'try' patterns very generally, more than 'with'.

and I also doubt that this is a very practical example.

Yes and no. What would be typical is people abstracting over recurrent pattern of 'for' and 'try' in their program and stuff them in a 'do' behavior, I'm inferring this from what people do with CL macros. So if one does what iterclose does a bunch of times in program, she could be tempted to write iterclose. It's succinctness daemon. General mileage can vary.

But I may have to wait until the next weekend before I can continue in this thread -- I can't work on this on workdays.

OK