I'm new to Ruby, so please excuse any ignorance on my part.  I read the
following article about Ruby and "duck typing":

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/100511

I got the impression that duck typing is the "right" way to do things
in Ruby.  However, the Ruby Standard Library itself doesn't seem to use
duck typing.  Consider the following example:

irb(main):001:0> require 'set'
=> true
irb(main):002:0> s = Set.new
=> #<Set: {}>
irb(main):003:0> s.superset? 0
ArgumentError: value must be a set

It seems like the "superset?" method explicitly checks that its
parameter is a set.  This is approach #1 in the "duck typing" article
above, which the article claims is not "the Ruby way".

So, what gives? If it's wrong to "try to make Ruby do Static Typing"
(as the article says), then why does the Ruby Standard Library do it?

-Mike