(define make-verifier (lambda (process modulus) (define combine-the-digits ; still needs some work (lambda (n) (define sum-plus ;(sum of processed versions of n's digits) + addend (lambda (n addend position) (if (= n 0) addend (sum-plus (quotient n 10) (+ addend (process position (remainder n 10))) (+ position 1))))) (sum-plus n 0 1))) (lambda (number) (= (remainder (combine-the-digits number) modulus) 0)))) (define isbn-verifier (make-verifier * 11)) (define upc-verifier (make-verifier (lambda (pos dig) (if (odd? pos) dig (* 3 dig))) 10))