[EMAIL PROTECTED] wrote: > Ken Tilton wrote: > >>Andrew Reilly wrote: >> >> >>> That all looks like data. >> >>No, not reverse, the part you did not understand. I do not mean what the >>code was doing, I meant that it was code. >> > > > Code is data is code
I was hoping no one would make that mistake. :) macros are all about code is data, but code is not data in Python* so the two words code and data serve to differentiate them for Pythonistas. * Taking questions after a keynote to ILC200? where he reiterated that Python was the same as Lisp for all intents and purposes: Norvig: "Yes, John?" McCarthy: "Is code also data in Python?" Norvig: "No." End of exchange. :) >- even in Python: This could be tougher than I thought. > > skills_table = [ > { > "title": "Absolute Value", > "annotations": ["Bleah bleah", "ho hum", "etc..."], > "hints": ["and so on", "etc..."], > "reverse" : (lambda x: whatever(x)) That does not demonstrate that code is data, that demonstrates that a lambda is a first-class object (and, yes, Python's lambda is lame). You will know you have code as data when you can write Python code that takes apart "whatever(x)" and produces "oh-now-I-get-it(y)". As part of the language, such that Python applies your transforming code for you whenever it sees whatever. (Hell, even C has a preprocessor.) > }, > { > "title": "Square Root", > "annotations": ["Bleah bleah", "ho hum", "etc..."], > "hints": ["and so on", "etc..."], > "reverse" : (lambda x: someother(x)) > }, > # etc... > ] > > Of course those lambdas are crippled in Python (and not really > necessary in this bogus example)... But that's without trying to be > clever: > > class AbsoluteValue: > title="Absolute Value" > annotations=["Some list", "goes here"] > @classmethod > def reverse(cls, *args): > # I didn't understand what your code was doing yeah, and god forbid you should ask. :) this is the crux of the matter! Actually, it is kinda cool that you and Greg are semi-identifying the crux by saying "this is the only bit I do not get, I'll skip this, move on, nothing to see here". > pass > defskill(AbsoluteValue) > > That would be a reasonable place for a "pie decorator" on a class, but > I guess that's not allowed. Hmmm. Actually, that is the whole point, all of Python is allowed. decorators were used in PyCells, but I never got much of an idea what they did. Is there a moral equivalent of a macroexpansion for decorators so you can show the before and after? > I doubt this second example would be > considered "Pythonic" in any case... exactly what we are looking for in this cultural exchange: how would Python handle what I am doing with macros in the reverse functions? Make it as slick and programmer-friendly (cuz I may get to a hundred of these before I am done with Algebra I) as possible. When all the Pythonistas proclaim it optimal, then we compare and contrast. This, btw, is the Tilton Test for language comparison: Not measurements of programmer effort, rather examination of perfect equivalent code. PyCells vs Cells would be an amazing case, because that is some hairy functionality. >>Not the code. In reverse. >> > Why not? Is, too! (ie, I am kinda looking for a specific question that conveys understanding of the use case.) > Python has plenty of other flaws that I can't happily work around, and > I do think Lisp is more flexible. However, I think your example is > readable enough with a data driven algorithm in most any popular > language. All of the data is visible to the reverse(...) method. > Maybe I missed something in your example, but I think you aren't trying > hard enough. :-) Precisely. I am not trying at all. I am coding between visits to Usenet. This use case just popped up and was pretty simple (at first, before I got to the reverse function) so I dropped it off. This is a wild macro, not farm-bred, deliberately crafted to embarrass macro. A real live natural comes up all the time working wouldn't want to code without it macro. I could have searched my code base to find more brutal cases, but this is short and sweet and unforced and uncontrived and wheres my thesaurus? ken -- Algebra: http://www.tilton-technology.com/LispNycAlgebra1.htm "Well, I've wrestled with reality for thirty-five years, Doctor, and I'm happy to state I finally won out over it." -- Elwood P. Dowd "I'll say I'm losing my grip, and it feels terrific." -- Smiling husband to scowling wife, New Yorker cartoon -- http://mail.python.org/mailman/listinfo/python-list