<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-7">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7036.0">
<TITLE>RE: [racket] sicp exercise 2.20</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->
<BR>

<P><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Courier New">Argument x is in the list anyway, so write (cons x ...)</FONT></SPAN>
</P>

<P><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Courier New">(define (same-parity x . xs)</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Courier New">&nbsp;(cons x (my-filter (... even? odd?) xs)))</FONT></SPAN>
</P>

<P><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Courier New">(define (my-filter pred? lst)</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Courier New">&nbsp;(cond</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Courier New">&nbsp;&nbsp; (null? lst) ...)</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Courier New">&nbsp;&nbsp; (pred? lst) ...)</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Courier New">&nbsp;&nbsp; (else ...)))</FONT></SPAN>
</P>

<P><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Courier New">If you already know function filter, you wont need my-filter. E,g:</FONT></SPAN>
</P>

<P><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Courier New">(define (same-parity x . xs)</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Courier New">&nbsp;(cons x (filter (if (even? x) even? odd?) xs)))</FONT></SPAN>
</P>

<P><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Courier New">and so on, and so on.</FONT></SPAN>
</P>

<P><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Courier New">Jos</FONT></SPAN>
</P>

<P><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; -----Original Message-----</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; From: users-bounces@racket-lang.org </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; [</FONT></SPAN><A HREF="mailto:users-bounces@racket-lang.org"><SPAN LANG="en-gb"><U><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">mailto:users-bounces@racket-lang.org</FONT></U></SPAN></A><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">] On Behalf Of Matthias Felleisen</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; Sent: 20 July 2010 15:54</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; To: Martin DeMello</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; Cc: Racket Users</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; Subject: Re: [racket] sicp exercise 2.20</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; Do you mean this?</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; #lang racket</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; (require rackunit)</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; ;; Nat Nat *-&gt; [Listof Nat]</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; ;; which of the</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; (define (same-parity x . xs)</FONT></SPAN>

<BR><SPAN LANG="el"><FONT SIZE=2 FACE="Arial Greek">&gt;&nbsp;&nbsp;&nbsp; (cons x (filter (ë (o) (or (and (even? x) (even? o)) (and</FONT></SPAN><SPAN LANG="en-gb"> </SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; (odd? x) (odd? o)))) xs)))</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; (check-equal? (same-parity 1 2 3 4 5 6 7) '(1 3 5 7)) </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; (check-equal? (same-parity 2 3 4 5 6 7) '(2 4 6))</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; On Jul 20, 2010, at 9:36 AM, Martin DeMello wrote:</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt; By way of a puzzle, I've been trying to solve SICP exercise 2.20</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt; ----------------------------</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt; Using the (define (f x . args)) notation, write a procedure </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt; &quot;same-parity&quot; that takes one or more integers and returns a list of </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt; all the arguments that have the same even-odd parity as the first </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt; argument. For example, (same-parity 1 2 3 4 5 6 7)</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt; (1 3 5 7)</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt; (same-parity 2 3 4 5 6 7)</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt; (2 4 6)</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt; ----------------------------</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt; using &quot;straight recursion&quot;, that is, without using any `let` or </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt; `define` constructs. Still not managed to find the trick that will </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt; tack on the first argument as the head of the list. Anyone have a </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt; hint?</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt;</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt; martin</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt; _________________________________________________</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt;&nbsp; For list-related administrative tasks:</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; &gt;&nbsp; </FONT></SPAN><A HREF="http://lists.racket-lang.org/listinfo/users"><SPAN LANG="en-gb"><U><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">http://lists.racket-lang.org/listinfo/users</FONT></U></SPAN></A><SPAN LANG="en-gb"></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; </FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt; _________________________________________________</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt;&nbsp;&nbsp; For list-related administrative tasks:</FONT></SPAN>

<BR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">&gt;&nbsp;&nbsp; </FONT></SPAN><A HREF="http://lists.racket-lang.org/listinfo/users"><SPAN LANG="en-gb"><U><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">http://lists.racket-lang.org/listinfo/users</FONT></U></SPAN></A><SPAN LANG="en-gb"></SPAN>
</P>

</BODY>
</HTML>