title: Ruby Integer(), Array(), et al -- what are they? Where do they come from?
body: <p>I've come across conversions of the form Array(value), String(value), and Integer(value) on occasion.  It appears to me that these are just syntactic sugar for a call to the corresponding value.to_a, value.to_s, or value.to_i methods.</p>
  
  <p>So I'm wondering:</p>
  
  <ul>
  <li>Where/how are these are defined?  I can't find them in Object, Module, Class, etc</li>
  <li>Are there any common scenarios for which it's preferable to use these rather than the corresponding/underlying to_X method?</li>
  <li><p>Could these be used in type-generic coercion?  That is, can I do something along the lines of </p>
  
  <pre><code>[Integer, String, Array].each {|klass| klass.do_generic_coercion(foo) }
  </code></pre></li>
  </ul>
  
  <p>?  (...and no, I don't really want to do that; I know the type I want out, but I'm looking to avoid the case statement.)</p>