Thanks Eli, that is much clearer.  I can work with that explanation.

Your last paragraph indicates that the button API by itself could use some improvement.
How does one obtain a button to send to button-type if not button-at?

Also, a confusing part of the widget documentation is this:

-------

5.4 The ‘push-button’ Widget
============================

Syntax:

     TYPE ::= (push-button [KEYWORD ARGUMENT]...  [ VALUE ])

-------

The above syntax description of course looks like a lisp-function call of push-button.
At the very least, changing this thing's name to widget-button would prevent such
confusion.

-- Bob