diff --git a/macros.lisp b/macros.lisp
index f06dc843e075866460416e79415db0529da0dbe5..e00618cacafd084a5b30f1109ed024f41c5c3dfc 100644
--- a/macros.lisp
+++ b/macros.lisp
@@ -1,17 +1,14 @@
 (in-package :alexandria)
 
 (defmacro with-gensyms (names &body forms)
-  "Binds each variable named by a symbol in NAMES to a unique symbol around
-FORMS. Each of NAMES must either be either a symbol, or of the form:
+  "Binds a set of variables to gensyms and evaluates the implicit progn FORMS.
 
- (symbol string-designator)
+Each element within NAMES is either a symbol SYMBOL or a pair (SYMBOL
+STRING-DESIGNATOR). Bare symbols are equivalent to the pair (SYMBOL SYMBOL).
 
-Bare symbols appearing in NAMES are equivalent to:
-
- (symbol symbol)
-
-The string-designator is used as the argument to GENSYM when constructing the
-unique symbol the named variable will be bound to."
+Each pair (SYMBOL STRING-DESIGNATOR) specifies that the variable named by SYMBOL
+should be bound to a symbol constructed using GENSYM with the string designated
+by STRING-DESIGNATOR being its first argument."
   `(let ,(mapcar (lambda (name)
                    (multiple-value-bind (symbol string)
                        (etypecase name