To get rid of ambiguity with extension, why not just say that "<" signifying extension has higher priority than "<" as an operator? That way, you could unambiguously write class class_maker(); ...; end or even class class_maker() < String; ...; end And if for some crazy reason a < operator returned a class, you could write class (something < something_else); ...; end That seems to me to be the most reasonable way to go. - Nathan Charles Oliver Nutter wrote: > Rick DeNatale wrote: >> It seems to me that java package naming maps more natuarally to nested >> Ruby modules >> >> why not >> >> module Java >> end >> >> module Java::Lang >> end >> >> class Java::Lang::System >> end > > Actually something very similar to this is planned for post 1.0, but > for now to make the syntax as friendly as possible it uses method > tricks... > > java.lang.System > > ...calls "java", returning the "java" package object, then calls > "lang" on that package, returning the "java.lang" package object, then > calls System on that package, returning the "java.lang.System" proxy > class. But in the future, I think it would better map to exactly what > you've described, in addition to having the Ruby class hierarchy > representing Java types map directly to the Java type hierarchy, with > modules playing the role of interfaces. > > But I still think being able to do > > class some_method(); da da da; end > > ...makes sense. > > - Charlie > >