willkürliche Genauigkeitsaddition unter Verwendung von Ziffernlisten

Was ich versuche, ist, zwei Listen zu nehmen und sie zusammenzufügen, als ob jede Liste eine ganze Zahl ist.

(define (reverse lst)
 (if (null? lst)
  '()
  (append (reverse (cdr lst)) 
      (list (car lst)))))

(define (apa-add l1 l2)
  (define (apa-add-help l1 l2)
    (cond ((and (null? l1) (null? l2)) '())
      ((null? l1) (list (+ (apa-add-help '() (cdr l2)))))
      ((null? l2) (list (+ (apa-add-help (cdr l1) '()))))

      ((>= (+ (car l1) (car l2)) 10) 
       (append (apa-add-help (cdr l1) (cdr l2))               
               (list (quotient (+ (car l1) (car l2)) 10))
               (list (modulo (+ (car l1) (car l2)) 10)))) ;this is a problem

      (else (append (apa-add-help (cdr l1) (cdr l2))
                    (list (+ (car l1) (car l2)))))))

(apa-add-help (reverse l1) (reverse l2)))

(apa-add '(4 7 9) '(7 8 4))
>'(1 1 1 5 1 3)

Ich weiß, dass sich das Problem um meine Rekursion dreht. Ich habe die Reihenfolge der Listen umgekehrt, um den Vorgang zu vereinfachen. Ich kann jedoch nicht verstehen, wie ich meinen Modulo-Wert (über den Wert übertragen) zum nächsten Objekt in der Liste hinzufügen kann . Wie kann ich das machen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage