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. > > >