#lang Racket (define (accumulate op initial seq) (if(NULL?seq) Initial (OP (car seq) (accumulate op initial (cdr seq)))); Accumulate (define (append Lst1 lst2)) (if(NULL?lst1) Lst2 (cons (Car lst1) (Append (Cdr lst1) lst2 ))); Append (define (enumerate-interval i j) (if(>i j)'()(Cons I (Enumerate-interval (+1i) (J ))); enumerate-interval (define (unique-pairs N) (Accumulate append'()(Map (Lambda (i) (Map (Lambda (j) (List I J)) (Enumerate-interval (+ I1) (enumerate)) (n) )-interval1N)); map); accumulate); Unique-Pairs (Unique-pairs3) (Define (flatmap proc seq) (Accumulate append'() (map proc seq))); Flatmap (define (filter predicate seq) (Cond (NULL? Seq'())( predicate (car seq)) (cons (Car seq) (filter predicate (cdr seq ))) (Else(filter predicate (cdr seq))); cond); filter (define (unique-Triple N) (Flatmap (Lambda (x) (Map (Lambda (j) (cons x J)) (Unique-pairs (-X1)) (map); Lambda (Enumerate-interval1N)); FLATMAP); unique-Triple (Unique-triple5)
sicp:2.40 2.41