On 2003-11-24T23:02:07+0100, Pascal Costanza wrote: > >As Anton van Straaten explained beautifully, all the objects in this > >case respond to some message like "turn off if you can", or "can you > >turn off?". > ...but that's a pretty bad idea in general. When you say this... > if (object.turnOffSupported()) { > object.turnOff(); > } > ...there is a chance that the object is replaced in another thread > between the check and the actual call. That wasn't what I had in mind. A more reasonable design of turnOffSupported(), within a relatively impoverished type system like Java's, would return a (possibly null) reference to an interface that supports turnOff(). if (TurnOffable object2 = object.turnOffable()) { object2.turnOff(); // object.turnOff() should be a type error } After all, turnOffable should return a witness for its claim that the object can be turned off, and that witness is an interface that supports turnOff. > BTW, this is what a DT language gives you for free. ;) What are you saying here that a dynamically typed language gives me for free? If by "give you for free" you simply mean "allow you to program without additional restrictions", then that is a rather vacuous claim, since the Turing machine gives you quite a bit for free according to that definition. Ken -- Edit this signature at http://www.digitas.harvard.edu/cgi-bin/ken/sig Sexy types in action: http://www.eecs.harvard.edu/~ccshan/cs252/usage.pdf new journal Physical Biology: http://sansom.biop.ox.ac.uk/images/physbio.gif What if All Chemists Went on Strike? (science fiction): http://www.iupac.org/publications/ci/2003/2506/iw3_letters.html
Attachment:
signature.asc
Description: Digital signature