Resource > SICP Exersise 2_40
 (define (filter predicate sequence)
   (cond ((null? sequence) '())
         ((predicate (car sequence))
          (cons (car sequence)
                (filter predicate (cdr sequence))))
         (else (filter predicate (cdr sequence)))))

 (define (make-pair-sum pair)
   (list (car pair) (cadr pair) (+ (car pair) (cadr pair))))
 
;; 解答 
 (use srfi-1)
 (define (uniq-sum-pairs n)
   (define (unique? lis)
     (not (equal? (car lis) (cadr lis))))
   (map make-pair-sum
        (filter unique?
                (flatmap
                 (lambda (i)
                   (map (lambda (j) (list i j))
                        (iota (- i 1) 1)))
                 (iota n 1)))))

 (use gauche.test)
 (test-start "Exersise2.40")
 (test* "1" '() (uniq-sum-pairs 1))
 (test* "2" '((2 1 3)) (uniq-sum-pairs 2))
 (test* "3" '((2 1 3) (3 1 4) (3 2 5)) (uniq-sum-pairs 3))
 (test-end)