; two list tasks
(define (sum xs) (apply + xs))
(define xss '((1 2 3 4) (2 3 4 5) (3 4 5 6)))
(display (map sum (apply map list xss))) (newline)
(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 xs '(1 2 3 4 2 3 4 5 3 4 5 6))
(define (splits n xs)
(let loop ((xs xs) (zs (list)))
(if (null? xs) (reverse zs)
(call-with-values
(lambda () (split n xs))
(lambda (first rest)
(loop rest (cons first zs)))))))
(display (map sum (splits 4 xs))) (newline)
OyB0d28gbGlzdCB0YXNrcwoKKGRlZmluZSAoc3VtIHhzKSAoYXBwbHkgKyB4cykpCihkZWZpbmUgeHNzICcoKDEgMiAzIDQpICgyIDMgNCA1KSAoMyA0IDUgNikpKQooZGlzcGxheSAobWFwIHN1bSAoYXBwbHkgbWFwIGxpc3QgeHNzKSkpIChuZXdsaW5lKQoKKGRlZmluZSAoc3BsaXQgbiB4cykKICAobGV0IGxvb3AgKChuIG4pICh4cyB4cykgKHpzICcoKSkpCiAgICAoaWYgKG9yICh6ZXJvPyBuKSAobnVsbD8geHMpKQogICAgICAgICh2YWx1ZXMgKHJldmVyc2UgenMpIHhzKQogICAgICAgIChsb29wICgtIG4gMSkgKGNkciB4cykgKGNvbnMgKGNhciB4cykgenMpKSkpKQoKKGRlZmluZSB4cyAnKDEgMiAzIDQgMiAzIDQgNSAzIDQgNSA2KSkKKGRlZmluZSAoc3BsaXRzIG4geHMpCiAgKGxldCBsb29wICgoeHMgeHMpICh6cyAobGlzdCkpKQogICAgKGlmIChudWxsPyB4cykgKHJldmVyc2UgenMpCiAgICAgIChjYWxsLXdpdGgtdmFsdWVzCiAgICAgICAgKGxhbWJkYSAoKSAoc3BsaXQgbiB4cykpCiAgICAgICAgKGxhbWJkYSAoZmlyc3QgcmVzdCkKICAgICAgICAgIChsb29wIHJlc3QgKGNvbnMgZmlyc3QgenMpKSkpKSkpCihkaXNwbGF5IChtYXAgc3VtIChzcGxpdHMgNCB4cykpKSAobmV3bGluZSk=