Hi All;<br><br>This is probably a dumb question, but here goes.<br><br>John Alan McDonald (Hi, John, if you're on this list!) has graciously consented to let me try to revive some almost 20 year old CL software (<a href="http://home.comcast.net/~johnamcdonald/jamcdonald0/az93.pdf">Arizona</a>).  SBCL doesn't seem to like type-related declarations in defgeneric forms (per the <a href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/mac_defgeneric.html#defgeneric">spec</a>).  And there are a lot of defgenerics of the form:<br>
<br>(declaim (declaration :returns)) ;; OK, only once, but then used repeatedly...<br><br>(defgeneric interactor-role-cursor (interactor role)<br>  (declare (type Interactor interactor)<br>       (type (or Interactor-Role Null) role)<br>
       (:returns (type xlib:Cursor)))<br>  (:documentation<br>   "Returns the cursor to be used when this Role is current."))<br><br>(defmethod interactor-role-cursor ((interactor Interactor)<br>                   (role Interactor-Role))<br>
  "The default cursor"<br>  (xlt:window-cursor (interactor-window interactor) :target))<br><br>I did certainly benefit from some of the runtime errors generated as a result of the type declarations of some of the defmethods and defuns in my efforts to update the clx parts of the software.<br>
<br>What is best practice, then, as regards trying to provide useful type-related information associated with generic functions?  Or have I been so brain-damaged by C++/Java/etc that I am thinking about the problem-space entirely the wrong way, and thus my solution-space question is entirely meaningless?<br>
<br>Thanks,<br><br>-jm<br><br>