[Python-Dev] A Hygienic Macro System in Python? (original) (raw)

James_Althoff@i2.com James_Althoff@i2.com
Wed, 20 Mar 2002 17:47:15 -0800


Or ...

invoke callable(): statement1 statement2 . . . statementn

is syntax for:

def temp(): statement1 statement2 . . . statementn

callable(temp)

del temp

More generally,

invoke expr-that-results-in-a-callable(a,b,c) lambda x,y,z: statement1 statement2 . . . statementn

is syntax for:

def temp(x,y,z): statement1 statement2 . . . statementn

expr-that-results-in-a-callable(temp,a,b,c)

del temp

examples:

invoke aquireLockAndDo(): sensitiveStuff()

invoke withConnectionDo(): generateReport()

invoke gui.showBusyCursorDuring(): doQuery()

invoke gui.showStatusDuring(msg="Searching..."): doQuery()

invoke gui.showBusyCursorDuring(): invoke gui.showStatusDuring(msg="Generating Report..."): invoke withConnectionDo(): generateReport()

invoke button.setEventHandler() lambda event: print event

Freely substitute any preferred keyword: "call", "run", etc. instead of "invoke".

call aquireLockAndDo(): sensitiveStuff()

run aquireLockAndDo(): sensitiveStuff()

etc.

Doesn't handle return values, but ...

Jim