Thanks for pointing out the existence of Object#instance_variable_set
(which, of course, Ruby ri v1.8b knows about).

But then I think Ruby should have a method Object#attribute_set (and
then also a method Object#attribute_get of course), so that we can set
accessible atributes directly so that we are able to say:

   Person.new( :name => 'John',  :born => '2003') # (1)

rather than

   Person.new(:@name => 'John', :@born => '2003') # (2)

or even

   Person.new(:name= => 'John', :born= => '2003') # (3)

I this respect, I think it is relevant to quote a 1993 post of Matz [
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/68955 ],
where he says:
>Subject: Re: instance_variable_set question 
>Newsgroups: comp.lang.ruby
>Date: 2003-04-09 01:32:15 PST 
>
>
>Hi,
>
>In message "Re: instance_variable_set question"
>    on 03/04/09, Phil Tomson <ptkwt / shell1.aracnet.com> writes:
>|
>|It _is_ a bit confusing, though - if you made an attr_accessor for
@bar,
>|you refer to it as :bar, not :@bar :
>
>You're specifying attribute names (i.e. exporting method names),
which
>does not contain "@" in them, not instance variable names.
>attr_accessor defines methods that use instance variables which names
>are "@"+attribute-name.
>
>       matz.

I think a method Object#attribute_set should exist, to enable straight
and dynamic access to attributes when we want to, and to avoid
counterintuitive calls like (2) or (3) in such cases.

What do you think?

Thanks.
Gerard