anchor.diff:                   :external-format external-format
                    :input-buffer-size input-buffer-size
                    :output-buffer-size output-buffer-size))
  +
  +(define-compiler-macro create-socket (&whole form family type connect external-format
  +                                      &key fd input-buffer-size output-buffer-size)
  +  (cond
  +    ((and (constantp family) (constantp type) (constantp connect))
  +     `(make-instance ',(select-socket-class family type connect :default)
  +                     :family ,family :file-descriptor ,fd
  +                     :external-format ,external-format
  +                     :input-buffer-size ,input-buffer-size
  +                     :output-buffer-size ,output-buffer-size))
  +    (t form)))
   
   (defmacro with-close-on-error ((var value) &body body)
     "Bind `VAR' to `VALUE', execute `BODY' as implicit PROGN and return `VAR'.
  
positive.code: 
  ;;; Internet Datagram Socket creation
  
  (defun %%make-internet-datagram-socket (family ef broadcast interface reuse-address
                                          local-host local-port remote-host remote-port)
    (let ((local-port  (ensure-numerical-service local-port))
          (remote-port (ensure-numerical-service remote-port)))
      (with-close-on-error (socket (create-socket family :datagram :active ef))
        (when broadcast (setf (socket-option socket :broadcast) t))
        (when local-host
          (bind-address socket (ensure-hostname local-host)
                        :port local-port
                        :reuse-address reuse-address)
          (when interface
            (setf (socket-option socket :bind-to-device) interface)))
        (when (plusp remote-port)
          (connect socket (ensure-hostname remote-host)
                   :port remote-port)))))
  
  (defun %make-internet-datagram-socket (args family ef)
    (destructuring-bind (&key broadcast interface (reuse-address t)
  
negative.code:             (multiple-value-prog1 (locally ,@body ,var) (setf ,errorp nil))
           (when (and ,var ,errorp) (close ,var :abort t))))))
  
  (defmacro %create-internet-socket (family &rest args)
    `(case ,family
       ,@(loop :for f :in '(:ipv4 :ipv6) :collect
            `(,f (create-socket ,f ,@args)))))
  
  (defmacro with-guard-again-non-list-args-and-destructuring-bind-errors
      (form args &body body)
    `(if (listp ,args)
  