On Wed, 24 Aug 2005, Phillip J. Eby wrote: > At 11:46 PM 8/23/2005 -0400, Michal Wallace wrote: > > On Tue, 23 Aug 2005, Phillip J. Eby wrote: > > > > I would say that there is definitely a real need for a > > > declarative Python object definition syntax that supports > > > nesting and internal references, and so if we can come up > > > with something good, it can and should *become* a standard for > > > such purposes, well beyond the scope of its initial mission > > > of being a WSGI deployment syntax. > > > Well, if that's all you want to do, then > > why not just add some syntactic sugar > > to pickle? > > pickles aren't a declarative format; they're procedural.
Huh. So it is. I didn't know that. :) I guess my real point is that it seems like a huge leap to come up with a whole new language, when python itself can do the job just fine. For example, if you set up a coding standard where data classes have an empty constructor, then you can do something like this: class Instance(Class, **kwargs): def __init__(self): self.class_ = Class self.kwargs = kwargs def eval(self): obj = self.class_() for k, v in kw.items(): setattr(obj, kw) return obj and maybe this for forward references: class Promise(thunk): def __init__(self, thunk): self.thunk = thunk def eval(self): return self.thunk() Then you can make all kinds of complicated things declaratively: class Node: pass def aComplicatedStructure(): loop = Instance(Node, next=Promise(lambda: loop)) return Instance(Node, child=loop, other={"a":"b"}) The only thing missing is to walk the tree and replace any Promise or Instance node with the result of its eval(). I'm sure there's a way to do all that without the restriction on __init__, too... Just add another class along those lines that handles parameters to the constructor. Now, I'm *not* saying this is the way to go for WSGI. But if you're going to shoot for the moon and propose a standard to use for *everything*, I think plain old python is more than adequate. Sincerely, Michal J Wallace Sabren Enterprises, Inc. ------------------------------------- contact: [EMAIL PROTECTED] hosting: http://www.cornerhost.com/ my site: http://www.withoutane.com/ ------------------------------------- _______________________________________________ Web-SIG mailing list Web-SIG@python.org Web SIG: http://www.python.org/sigs/web-sig Unsubscribe: http://mail.python.org/mailman/options/web-sig/archive%40mail-archive.com