(define luhn-check
(lambda (ccn)
(define csum 0)
(define num 0)
(do ((i (string-length ccn) (- i 1)))
((<= i 0) (print csum))
(set! num (string->number (substring ccn (- i 1) i)))
(if (> (modulo i 2) 0)
(begin
(set! num ( * 2 num))
(if (> num 9) (set! num (- num 9)))))
(set! csum (+ num csum))
)))
;; test case
(luhn-check “4561261212345467″)
And here is implemented with MySQL.