Conrad Schneiker <schneik / austin.ibm.com> writes: > But I still have not seen convincing arguments that some form of > constant/frozen class (aka static typing) couldn't be a worthwhile > extension of Ruby. The most compelling argument to me is "is it ain't broke, don't fix it." In this context, it means that someone needs to produce real evidence that: 1. there is a problem 2. static typing fixes it 3. static typing is meaningful within the context of Ruby 4. static typing can be implemented in Ruby I feel that (3) is probably one of the more difficult points to prove. Assuming a type is represented by a class name (a dubious assumption but I haven't seen better here), then for a static type to be meaningful, that class and all that class' ancestors must be frozen (otherwise you could change the semantics of an object at run time). If a class is frozen, then singleton classes based off that class become a problem. For example, a = "Hello" def a.+(b) "walter" end What is the type of 'a' above? Clearly it isn't 'String' anymore. But then you get a logical problem. Global methods in Ruby extend a particular singleton instance of Object. Under static typing, Object must be frozen (because it is a ancestor of all classes). Thus the object under which you define these global functions can no longer be an instance of Object (because adding functions to it changes its semantic, just as adding + to 'a' stops 'a' being a String). This leads you to a problem. The global object can no longer be an instance of the frozen class Object. But all objects in Ruby must be descendents of Object. Dizzy..... I don't think that adding static types to Ruby is as obvious as some people are making out. Again, what exactly _are_ people trying to fix anyway? Dave