Automating the Search

   (define first-perfect-after
     (lambda (n)
       (if (perfect? (+ n 1))
           (+ n 1)
           (first-perfect-after (+ n 1)))))

   > (first-perfect-after 0)
   6
   > (first-perfect-after 6)
   28
(+ n 1) is evaluated multiple times, which is both ugly and inefficient.