; partial list reversal
(use-modules (srfi srfi-11))
(define (split n xs)
(let loop ((n n) (xs xs) (zs '()))
(if (or (zero? n) (null? xs))
(values (reverse zs) xs)
(loop (- n 1) (cdr xs) (cons (car xs) zs)))))
(define (list-part-rev xs start finish)
(let*-values (((temp end) (split finish xs))
((beginning middle) (split start temp)))
(append beginning (reverse middle) end)))
(display (list-part-rev '(0 1 2 3 4 5 6 7 8 9) 3 6)) (newline)
OyBwYXJ0aWFsIGxpc3QgcmV2ZXJzYWwKCih1c2UtbW9kdWxlcyAoc3JmaSBzcmZpLTExKSkKCihkZWZpbmUgKHNwbGl0IG4geHMpCiAgKGxldCBsb29wICgobiBuKSAoeHMgeHMpICh6cyAnKCkpKQogICAgKGlmIChvciAoemVybz8gbikgKG51bGw/IHhzKSkKICAgICAgICAodmFsdWVzIChyZXZlcnNlIHpzKSB4cykKICAgICAgICAobG9vcCAoLSBuIDEpIChjZHIgeHMpIChjb25zIChjYXIgeHMpIHpzKSkpKSkKCihkZWZpbmUgKGxpc3QtcGFydC1yZXYgeHMgc3RhcnQgZmluaXNoKQogIChsZXQqLXZhbHVlcyAoKCh0ZW1wIGVuZCkgKHNwbGl0IGZpbmlzaCB4cykpCiAgICAgICAgICAgICAgICAoKGJlZ2lubmluZyBtaWRkbGUpIChzcGxpdCBzdGFydCB0ZW1wKSkpCiAgICAoYXBwZW5kIGJlZ2lubmluZyAocmV2ZXJzZSBtaWRkbGUpIGVuZCkpKQoKKGRpc3BsYXkgKGxpc3QtcGFydC1yZXYgJygwIDEgMiAzIDQgNSA2IDcgOCA5KSAzIDYpKSAobmV3bGluZSk=