Argument x is in the list anyway, so write (cons x ...) (define (same-parity x . xs) (cons x (my-filter (... even? odd?) xs)))
(define (my-filter pred? lst) (cond (null? lst) ...) (pred? lst) ...) (else ...))) If you already know function filter, you wont need my-filter. E,g: (define (same-parity x . xs) (cons x (filter (if (even? x) even? odd?) xs))) and so on, and so on. Jos > -----Original Message----- > From: [email protected] > [ <mailto:[email protected]> mailto:[email protected]] On Behalf Of Matthias Felleisen > Sent: 20 July 2010 15:54 > To: Martin DeMello > Cc: Racket Users > Subject: Re: [racket] sicp exercise 2.20 > > > > Do you mean this? > > #lang racket > > (require rackunit) > > ;; Nat Nat *-> [Listof Nat] > ;; which of the > (define (same-parity x . xs) > (cons x (filter (λ (o) (or (and (even? x) (even? o)) (and > (odd? x) (odd? o)))) xs))) > > (check-equal? (same-parity 1 2 3 4 5 6 7) '(1 3 5 7)) > (check-equal? (same-parity 2 3 4 5 6 7) '(2 4 6)) > > > > > On Jul 20, 2010, at 9:36 AM, Martin DeMello wrote: > > > By way of a puzzle, I've been trying to solve SICP exercise 2.20 > > ---------------------------- > > Using the (define (f x . args)) notation, write a procedure > > "same-parity" that takes one or more integers and returns a list of > > all the arguments that have the same even-odd parity as the first > > argument. For example, (same-parity 1 2 3 4 5 6 7) > > (1 3 5 7) > > (same-parity 2 3 4 5 6 7) > > (2 4 6) > > ---------------------------- > > using "straight recursion", that is, without using any `let` or > > `define` constructs. Still not managed to find the trick that will > > tack on the first argument as the head of the list. Anyone have a > > hint? > > > > martin > > _________________________________________________ > > For list-related administrative tasks: > > <http://lists.racket-lang.org/listinfo/users> http://lists.racket-lang.org/listinfo/users > > _________________________________________________ > For list-related administrative tasks: > <http://lists.racket-lang.org/listinfo/users> http://lists.racket-lang.org/listinfo/users
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users

