On Tue, 9 Sep 2003, Jim Weirich wrote:

# 
# I'm not sure an extensible %_{} syntax will solve the basic problem. 
# Suppose my library defines JimData to be %j{jim data goes here} and John
# wrote a library where %j{john data goes here}.  Since defining %j{}
# seems to be a global decision, we would have two libraries that couldn't
# /ever/ be used in the same Ruby program.  We have nice modules to keep
# our name spaces clean, and then we start using a name space with only 62
# possibilities (I'm counting upper/lower case letters and digits).
# 


I wonder if Rite will support Selector Namespaces( 
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/26422 ).  
These might provide part of the solution to the problem you're outlining 
(not to mention making things like David Blacks' Ruby Behaviors module 
viable).

# I think an extensible %_{} syntax could only fly if we were able to say
# "Over /this/ section of code, %j will mean JimData, and on /that/
# section of code %j will mean JohnData.  In other words, %_{} needs
# scoping rules.  And I'm not convinced the value added by extensible %_{}
# is more than the added complexity.  
# 

I guess it's very similar to the problem we already run into with being 
able to redefine classes at runtime.

# I suspect its easier to just say JimData.new %{...}.
# 

Agreed, but this is fun to talk about. :)