On Thu, 19 Feb 2009, Matt Barber wrote:
Perhaps there is a conceptual difference between overriding internal classes for a class with the same behavior but with added methods (e.g. the [print] and [soundfiler] examples from before), and overriding with a different object, or one with a different interface (the [pow~] situation).
Right. It has to do with the Liskov substitution principle, if you consider the new interface as a subtype of the old interface: whatever holds for the old interface, should hold for the new interface.
This principle defines what's a subtype, but doesn't say what it should be applied on. I mean, you can make statements about interfaces, and those statements talk about subtypes, but they don't necessarily talk about features, or they talk about one man's features which is another man's hole or bug. I mean, before worrying about subtypes, we have to figure out what's a feature and what's not.
I say that because there's something called pack_anything that is defined in pd, which looks pretty deliberate, and yet, it still seems to someone like a bug. So, what's a feature?
(Liskov's also has other exceptions such as "covariant types", but that's another thing)
Meanwhile, it would not be well-motivated to override it with an object which (to be silly) indexed tables in reverse, or (to be ridiculous because it's 4:00 AM here) grabbed a random joke from the web every 64 samples and posted it to the console.
Actually, if the spec of the class does not say that nothing will be posted to the console, and that there is no rule that says that nothing gets posted to the console unless specified explicitly in the spec, then it is the right of every subclass to do whatever it wants with the console, really... in theory... though it would be quickly reported as an annoyance or a bug. I suppose that... if it's really at 64 samples, then it would just flood the pd console so bad that it would freeze the programme.
"in the name of gbuzz stop what you're doing and fix the library!"
for a little while I hoped gbuzz would be the name of a Gtk port of Jeskola's BuzzTracker.
_ _ __ ___ _____ ________ _____________ _____________________ ... | Mathieu Bouchard - tél:+1.514.383.3801, Montréal, Québec