On Nov 26, 6:29 pm, Steven D'Aprano <[EMAIL PROTECTED]> wrote: > On Thu, 27 Nov 2008 06:41:47 +0200, Hendrik van Rooyen wrote: > > I am using the term in the restricted sense of Python writing Python > > source. > > > Given that, can anybody think of an example that you could not do with a > > class? (excepting the "stored procedure" aspect) > > GUI designer. You write a program to let the user create code by clicking > buttons, dragging objects, drawing lines, etc. The GUI designer may use > classes, but the purpose of those classes is to generate source code.
I want to disagree with this example. I hold that the proper output of a GUI designer is in XML, or another data format. > Testing code speed... you might have some functions with a loop, and you > want to unroll the loop as an optimization. If you have one function, you > can unroll it yourself. If you have a hundred such functions, you might > want to write a program to do it. (Yes, I'm stretching...) > > Don't like that Python doesn't optimize tail-recursion? Then write a > source-code analyzer that detects tail-recursion and re-writes the > function using a while loop. I've seen a preprocessor come up a few times. The input is a program's source, and the output is source. Of course you can do it with quotes and 'exec' at run-time, but if your whole file is quoted, it may be a better option. (Part of my rationale was I wanted syntax-coloring.) > >> Thinking further back, when I was young and programming in Apple's > >> Hypercard 4GL, I used to frequently use Hypercard scripts to generate > >> new Hypercard scripts. That was to work around the limitations of the > >> scripting language. > > > What sort of stuff did you do, and would having had simple OO available > > have rendered it unnecessary? > > It's been 20-odd years, and the examples were pretty trivial... I don't > really recall exactly, but it would have been something like this: > > * design a GUI involving lots of buttons on screen, each one with quite > similar but not identical code; > > * since Hypercard didn't have a layout manager, write a script to > generate each button, place it where needed, and set the button's code. snip (Above.) I'm not sure if you'd count something like 'perlmodule': import perl # Simple arithmetics six = perl.eval("3+3") # Eval can also return functions sum = perl.eval("sub { my $s = shift; $s += shift while @_; $s }") print sum(1,2,3) http://aspn.activestate.com/ASPN/CodeDoc/pyperl/perlmodule.html but speaking of quoted code and all... -- http://mail.python.org/mailman/listinfo/python-list