anchor.diff:    ;;; translated according to RETTYPE.  Obtain a pointer that can be
     ;;; passed to C code for this callback by calling %CALLBACK.
     (defmacro define-callback (name return-type args &body body)
  -    (let ((arg-names (mapcar #'first args))
  -	  (arg-types (mapcar #'second args)))
  +    (let* ((args (mapcar #'(lambda (arg)
  +			     (if (atom arg) (list arg arg) arg))
  +			 args))
  +	   (arg-names (mapcar #'first args))
  +	   (arg-types  (mapcar #'second args)))
         `(progn
   	 (defvar ,name ',name)
   	 (register-callback ',name 
  
positive.code: ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  
  ;; $Id: interface.lisp,v 1.6 2007-09-07 07:28:42 espen Exp $
  
  (in-package "GFFI")
  
  
negative.code:   (let ((define-callback 
  	  #+cmu'alien:def-callback 	              
  	  #+(and sbcl alien-callbacks)'sb-alien::define-alien-callback
  	  #+(and sbcl (not alien-callbacks))'sb-alien:define-alien-function)
  	(args (mapcar #'(lambda (arg)
  			  (if (atom arg) (list arg arg) arg))
  		      args)))
      `(progn
         #+cmu(defparameter ,name nil)
         (,define-callback ,name 
  