> have various classes (such as string) define a set of proc objects
> that had different sort behaviors:
> 
> 
>   [ ...] sort &String::dict_order
>   [ ...] sort &String::case_insensitive_order
>   [ ...] sort &Number::ignore_sign_order

I like this. It's easier to write new sorting orders. Could you guess how
ä should be sorted?

I'd like to raise another point however. I know iterators are quite handy
and work well, but the separation of blocks and Procs are currently beyond
me. So say, I'd like to redefine the sorting to call back for every swap
made.

  [...].sort &String::dict_order, { print "swapped #{swapped}\n"; swapped+=1
}

I don't know if this is currently possible with blocks (call and yield
multiple blocks), it's surely works with plain Proc objects passed around.

My second point for this mail actually touches the sort example. Is there
any need to create "standard" localisation library for Ruby? I'd guess the
dict_order changes per country (maybe even inside country) as does zillions
of other things (default formats for dates, numbers, currencies etc.) The
user could specify 

  ./configure --enable-localisation="Spain" --set-number-format="decimal
point|groups=3|spacing=''|decimals=2" --set-currency-format="..."

which would set default values for one-liners by setting 

  Locale.number_format = Locale::NumberFormat(
      {'decimal point'=>true, 'groups'=>3,...})

and redefining String::dict_order to Locale::Spain::dict_order.

I'm not proposing any design here, just raising an issue. With proper design
and base implementation in place, people could (and will) add their own
settings and functionality gradually.

    - Aleksi