I like this idea.

I had toyed with the idea of omitting identifiers by
letting the interpreter assume that the first N 
(previously unknown) identifiers that it encountered
in the iterator were the parameter names.

But I think this scheme is simpler and more reasonable.

Hal

> I'm back at my computer after some traveling. I know I think Ruby 
> subconsiously because today at work (in the midst of java code) I came up 
> with weird shorthand which could improve code readibility. I've no 
> idea for syntax "for the other side" but my idea for the caller side 
> could be presented like this:
> 
> {'foo' => 'bar', 'dog' => 'bert'}.each_pair {
>   print key, ": ", value, "\n"
> }
> 
> This code is somehow magically translated into following before execution.
> 
> {'foo' => 'bar', 'dog' => 'bert'}.each_pair {
>   |key, value|
>   print key, ": ", value, "\n"
> }
> 
> I thought being able to set default iterator parameter naming *might* 
> be good idea.
> 
> Now if people think this is good (I know Matz said at least he's lazy :)
> we should think
> 
> 1) proper default names
> 2) way to describe default names to interpreter for 
>    home made iterating functions
> 
> For the first point the documentation could give a hint, because iterators 
> are already documented like:
> 
>         each_key {|key|...}
>                Iterates over each key in the hash table.
> 
> The second is harder, and might require some new syntax.
> 
>   def each_key
>     set_default_named_parameters( 'key', 'value' )
>     # ... normal code with code for iterator
>   end
> 
> Or, logically (and maybe more beautifully):
> 
>   def weird_iterator(foo) | key, value |
>     # ... normal code with use of iterator
>   end
> 
> This is just an idea, so I'm not proposing immediate change, nor
> do I know how useful default naming would be.
> 
> 
>