At 08:51 PM 5/20/2006 -0600, Steven Bethard wrote: >I'd particularly be interested in an example where overloading >implies() to do something other than issubclass comparisons solves a >real problem.
The prototype overloads implies() to allow a generic function to imply any type that can be passed to the generic function. The flatten() example then uses this by defining a dummy 'iter()' generic function. RuleDispatch is of course another example; it has its own 'implies()' protocol that is used in basically the same way. Of course, it has lots of types that implement implies(), since it supports isinstance(), issubclass(), comparison operators, object identity checks, etc. So anything that people use RuleDispatch for is essentially a "real problem" being solved by overloading of implies(). The Overload3K implementation is a restricted subset of what RuleDispatch does, in that Overload3K never performs tests directly on arguments, only on the arguments' types. However, a RuleDispatch implementation based on Overload3K could still use the same implies() function that Overload3K does, albeit only for inter-signature priority comparisons. Anyway, the main thrust of the prototype was to answer the then-current discussion about interfaces and typeclasses and the like. I wanted to show that an open-ended system (based on the 4 concepts in my post immediately previous to this one) would allow interfaces, typeclasses, or whatever the heck else people want, to be implemented through a common base system that would also be extensible to full predicate dispatching for people who want that. _______________________________________________ Python-3000 mailing list [email protected] http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com
