car や cdr を初めて知った Rubyist が初めてやるだろうことをやっとくよ。 #!/usr/bin/ruby class Array def method_missing(name, *args) if name.to_s =~ /^c([ad]+)r$/ $1.split(//).reverse.inject(self) do |cons, ch| (ch == "a") ? cons[0] : (cons.size > 2) ? cons[1..-1] : cons[1] end else raise NoMethodError.new(name, args) # i should raise a "NameError" exception? end end def respond_to?(name, priv=false) (name.to_s =~ /^c([ad]+)