title: Racket difference between new and instantiate
body: <p>On <a href="https://docs.racket-lang.org/table-panel/index.html" rel="nofollow noreferrer">table-panel</a> I stumbled upon the call to <code>instantiate</code>. Before, when reading the documentation for GUI in Racket I only saw <code>new</code> being used to create objects of GUI classes.</p>
  
  <p>Usage of <code>instantiate</code> from that page:</p>
  
  <pre><code>(instantiate button%
          ((format "~a" j) child)
          (stretchable-width #t)
          (stretchable-height #t)
          (callback
           (lambda (button event)
             (printf "~a~n" (send button get-label)))))
  </code></pre>
  
  <p>Usage of <code>new</code> in the rest of the <a href="http://docs.racket-lang.org/gui/windowing-overview.html" rel="nofollow noreferrer">documentation</a>:</p>
  
  <pre><code>; Make a frame by instantiating the frame% class
  (define frame (new frame% [label "Example"]))
  </code></pre>
  
  <p>What is the difference between the two?</p>
  
  <h1>Edit</h1>
  
  <p>I found a <a href="https://docs.racket-lang.org/reference/objcreation.html#%28form._%28%28lib._racket%2Fprivate%2Fclass-internal..rkt%29._instantiate%29%29" rel="nofollow noreferrer">documentation</a> page telling me about the difference, but I don't really understand what "by-name initialization arguments" are. Is this the same as keyword arguments?</p>