そういえば

1

昔作った「3つの数のうちから大きい数2つの和を返す」というような関数ってもっと一般的に定義できる。

(use pre-sicp)

(define (f n . seq)
  (define (select seq count)
    (if (= count n)
        '()
        (cons (car seq) (select (cdr seq) (+ count 1))))) 
  (accumulate + 0 (select (reverse (sort seq)) 0)))

(define (sum-max2-of-3 x y z)
  (f 2 x y z))

;	gosh> (sum-max2-of-3 3 4 5)
;	9
;	gosh> (sum-max2-of-3 2 2 2)
;	4
;	gosh> (sum-max2-of-3 -3 -1 10)
;	9

2

accumulate-nのために作ったようなものも

(define (g n max)
  (map (lambda (x) (enumerate-interval x (+ x (- n 1))))
       (filter (lambda (y) (= 1 (remainder y n))) (enumerate-interval 0 max))))
;	gosh> (g 3 12)
;	((1 2 3) (4 5 6) (7 8 9) (10 11 12))