(define n-reverse-sublist (lambda (n ls) ; REQUIRES: n > 0 (letrec ((n-dup-on ; TYPE: int, datum, list -> list (lambda (n to-dup tail) ; REQUIRES: n > 0 ; ENSURES: result is n conses ; of to-dup in front of tail (if (zero? n) tail (cons to-dup (n-dup-on (sub1 n) to-dup tail)))))) (if (null? ls) '() (n-dup-on n (reverse (car ls)) (n-reverse-sublist n (cdr ls))))))) (define n-reverse-sublist2 (lambda (n ls) ; REQUIRES: n > 0 (let ((n-dup-on ; TYPE: datum, list -> list (lambda (to-dup tail) ; ENSURES: result is n conses ; of to-dup in front of tail (letrec ((n-dup ; TYPE: num -> list (lambda (n*) (if (zero? n*) tail (cons to-dup (n-dup (sub1 n*))) )))) (n-dup n))))) (n-dup-on (reverse (car ls)) (n-reverse-sublist n (cdr ls))))))