anchor.diff:         (handler-case (progn ,@body)
            (error (err) `(error ,err)))
          ,form))
  +
  +(eval-when (:compile-toplevel :load-toplevel :execute)
  +  (defun make-1°-level-name (family type connect)
  +    (format-symbol :net.sockets "%~A-~A-~A-~A-~A" :make family type connect :socket)))
  +
  +(defmacro define-socket-creator ((socket-family socket-type socket-connect)
  +                                 (family ef key &rest args) &body body)
  +  (assert (eql '&key key))
  +  (flet ((maybe-quote-default-value (arg)
  +           (cond ((symbolp arg) arg)
  +                 ((consp arg)   (list (first arg) `(quote ,(second arg))))))
  +         (arg-name (arg)
  +           (cond ((symbolp arg) arg)
  +                 ((consp arg)   (first arg)))))
  +    (let* ((arg-names (mapcar #'arg-name args))
  +           (1°-level-function (make-1°-level-name socket-family socket-type socket-connect))
  +           (2°-level-function (format-symbol t "%~A" 1°-level-function))
  +           (1°-level-body `(,2°-level-function family ef ,@arg-names)))
  +      `(progn
  +         (declaim (inline ,2°-level-function))
  +         (defun ,2°-level-function (,family ,ef ,@arg-names) ,@body)
  +         (defun ,1°-level-function (arguments family ef)
  +           (destructuring-bind (&key ,@args) arguments ,1°-level-body))
  +         (define-compiler-macro ,1°-level-function (&whole form arguments family ef)
  +           (with-guard-against-non-list-args-and-destructuring-bind-errors
  +               form arguments
  +             ;; Must quote default values in order for them not to be evaluated
  +             ;; in the compilation environment
  +             (destructuring-bind (&key ,@(mapcar #'maybe-quote-default-value args))
  +                 (cdr arguments)
  +               (flet ((replace-arguments-with-their-values (form)
  +                        (sublis (mapcar #'cons ',(list* 'family 'ef arg-names)
  +                                        (list family ef ,@arg-names))
  +                                form)))
  +                 (replace-arguments-with-their-values ',1°-level-body)))))))))
    
   ;;; Internet Stream Active Socket creation
  
positive.code:                   :reuse-address reuse-address)
      (listen-on socket :backlog backlog)))
  
  (declaim (inline %%make-local-stream-passive-socket))
  (defun %%make-local-stream-passive-socket (family ef local-filename reuse-address backlog)
    (declare (ignore family))
    (with-close-on-error (socket (create-socket :local :stream :passive ef))
      (%%init-local-stream-passive-socket socket local-filename reuse-address backlog)))
  
  (defun %make-local-stream-passive-socket (args family ef)
    (destructuring-bind (&key local-filename (reuse-address t)
                              (backlog *default-backlog-size*))
        args
      (%%make-local-stream-passive-socket family ef local-filename reuse-address backlog)))
  
  (define-compiler-macro %make-local-stream-passive-socket (&whole form args family ef)
    (with-guard-against-non-list-args-and-destructuring-bind-errors
        form args
      (destructuring-bind (&key local-filename (reuse-address t)
                                (backlog *default-backlog-size*))
          (cdr args)
        `(%%make-local-stream-passive-socket ,family ,ef ,local-filename ,reuse-address ,backlog))))
  
  ;;; Internet Datagram Socket creation
  
  (defun %%init-internet-datagram-socket (socket broadcast interface reuse-address
                                          local-host local-port remote-host remote-port)
    (setf (socket-option socket :no-sigpipe :if-does-not-exist nil) t)
    (let ((local-port  (ensure-numerical-service local-port))
          (remote-port (ensure-numerical-service remote-port)))
  
negative.code:     (when (eq :ipv4 address-family) (setf ipv6 nil))
      (let ((*ipv6* ipv6))
        (when (eq :internet address-family) (setf address-family +default-inet-address-family+))
        (multiple-value-case ((address-family type connect))
          (((:ipv4 :ipv6) :stream :active)
           (%make-internet-stream-active-socket args address-family external-format))
          (((:ipv4 :ipv6) :stream :passive)
  