; lob-add1 converts a list of bits into a list of bits
;   representing the next larger integer.  For instance, since 9+1=10,
;        (list 1 0 0 1)) =  (list 0 1 0 1)
;
;   The code below was guided by the template,
;   and the knowledge that:
;       (0) + 1 = 1
;       (2a + 0) + 1 = 2a + 1
;       (2a + 1) + 1 = 2(a+1) + 0


      (define lob-add1
        (lambda (lob)
          (if (null? lob)
              (list 1)
              (if (zero? (car lob))
                  (cons 1 (cdr lob))
                  (cons 0 (lob-add1 (cdr lob)))))))

; You could also use <code>cond</code> instead of <code>if</code>:
;
      (define lob-add1
        (lambda (lob)
          (cond
            ((null? lob)  (cons 1 null))
            ((zero? (car l))  (cons 1 (cdr lob)))
            (else  (cons 0 (lob-add1 (cdr lob)))))))