(use srfi-1) (use srfi-8) (use gauche.collection) (define (scanl proc seed ls) (reverse (fold2 (lambda (ele acc-l acc-n) (let1 n (proc ele acc-n) (values (cons n acc-l) n))) (cons seed '()) seed ls))) (scanl + 0 '()) ;; (0) (scanl + 0 '(1)) ;; (0 1) (scanl + 0 '(1 2)) ;; (0 1 3) (scanl + 0 (iota 10 1)) ;; (0 1 3 6 10 15 21 28 36 45 55)