On Fri, Jan 14, 2005 at 02:03:57AM +1000, Nick Coghlan wrote: | Carlos Ribeiro wrote: | > On Thu, 13 Jan 2005 10:08:10 -0500, Phillip J. Eby wrote: | > > With the previous PEP, people could create all sorts of subtle problems | > > in their code (with or without transitivity!) and have no direct | > > indicator of a problem. Clark and Ian made me realize this with their | > > string/file/path discussions -- *nobody* is safe from implicit | > > adaptation if adaptation actually creates new objects with independent | > > state! An adapter's state needs to be kept with the original object, | > > or not at all, and most of the time "not at all" is the correct answer. | > | >+1, specially for the last sentence. An adapter with local state is | >not an adapter anymore! It's funny how difficult it's to get this... | >but it's obvious once stated. | | +lots
-1 There is nothing wrong with an adapter from String to File, one which adds the current read position in its state. No adapter is a perfect translation -- or you woudn't need them in the first place. An adapter, by default, does just that, it wraps the object to make it compliant with another interface. To disallow it from having local state is, like taking the wheels off a car and expecting it to be useful (in somecases it is, for ice fishing, but that's another and rather oblique story). Ian stated the issue properly: adapters bring with them an intent, which cannot, in general way, be expressed in code. Therefore, combining adapters haphazardly will, of course, get you into trouble. The solution is simple -- don't do that. PEP 246 should at the very least remain silent on this issue, it should not encourage or specify automagic transitive adaptation. If a user blows their foot off, by their own actions, they will be able to track it down and learn; if the system shots their foot off, by some automatic transitive adaption; well, that's another issue. | Now that it's been stated, I think this is similar to where implicit type | conversions in C++ go wrong, and to the extent that PEP 246 aligns with | those. . . *shudder*. PEP 246 doesn't align at all with this problem. Best, Clark -- Clark C. Evans Prometheus Research, LLC. http://www.prometheusresearch.com/ o office: +1.203.777.2550 ~/ , mobile: +1.203.444.0557 // (( Prometheus Research: Transforming Data Into Knowledge \\ , \/ - Research Exchange Database /\ - Survey & Assessment Technologies ` \ - Software Tools for Researchers ~ * _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com