Download (archived because the original server is unreliable): http://ftp.linux.org.uk/pub/lisp/cclan/pgutils.tar.gz
Quick assessment (2023-02-23)
Broken because the code was originally written before symbol-macrolet was standardized:
#+(or cltl2 symbolics)    ; LMH
(defmacro alrec (rec &optional base)
  "Anaphoric list recurser (lrec): use `it' to refer to the current
   car of the list, and `rec' to the function rec itself.
   every on #'oddp,
   (alrec (and (oddp it) rec) t) is the equivalent of
   (lrec #'(lambda (x f) (and (oddp x) (funcall f))) t)."   ; LMH
  (let ((gfn (gensym)))
    `(lrec #'(lambda (it ,gfn)
	       (declare (ignorable it) (function ,gfn))   ; LMH
               (#+cltl2 symbol-macrolet #+symbolics clos:symbol-macrolet ((rec (funcall ,gfn)))
                 ,rec))
           ,base)))
#-(or cltl2 symbolics)    ; LMH   -- I don't think this works
(defmacro alrec (rec &optional base)
  "Anaphoric list recurser (lrec): use `it' to refer to the current
   car of the list, and `rec' to the function rec itself.
   every on #'oddp,
   (alrec (and (oddp it) rec) t) is the equivalent of
   (lrec #'(lambda (x f) (and (oddp x) (funcall f))) t)."   ; LMH
  (let ((gfn (gensym)))
    `(lrec #'(lambda (it ,gfn)
	       (declare (ignorable it) (function ,gfn))   ; LMH
               (labels ((rec () (funcall ,gfn)))
                 ,rec))
           ,base)))
(defmacro on-cdrs (rec base &rest lsts)
  "Anaphoric list recursion, for defining named functions,
   e.g., (defun our-every (fn lst) (on-cdrs (and (funcall fn it) rec) t lst))."   ; LMH
  `(funcall (the function (alrec ,rec #'(lambda () ,base))) ,@lsts))   ; LMH the function
The actual code from the book is:
(defmacro alrec (rec &optional base)
  "cltl2 version"
  (let ((gfn (gensym)))
    `(lrec #'(lambda (it ,gfn)
	       (symbol-macrolet ((rec (funcall ,gfn)))
		 ,rec))
	   ,base)))
(defmacro alrec (rec &optional base)
  "cltl1 version"
  (let ((gfn (gensym)))
    `(lrec #'(lambda (it ,gfn)
	       (labels ((rec () (funcall ,gfn)))
		 ,rec))
	   ,base)))
(defmacro on-cdrs (rec base &rest lsts)
  `(funcall (alrec ,rec #'(lambda () ,base)) ,@lsts))
So this was given as a CLtL2 technique pre-ANSI.
obsolete