Hi Sam --<div><br></div><div>As Jos commented, this is a very tough exercise, but it looks like you&#39;re off to a good start.  </div><div><br></div><div>The most obvious problem with your current solution lies with &#39;insert-everywhere/in-single-word.&#39;  My first suggestion is to check the function examples to make sure the values they expect are consistent with your data definitions. </div>

<div><br></div><div>Dave</div><div><br></div><div><br></div><div><br><div class="gmail_quote">On Tue, Jul 6, 2010 at 1:15 PM, Jos Koot <span dir="ltr">&lt;<a href="mailto:jos.koot@telefonica.net">jos.koot@telefonica.net</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Exercise 12.4.2 is notorius. When looking to (list &#39;a &#39;b &#39;c), you should<br>
exspect 6 distinct permutations.<br>
<font color="#888888">Jos<br>
</font><div><div></div><div class="h5"><br>
&gt; -----Original Message-----<br>
&gt; From: <a href="mailto:users-bounces@racket-lang.org">users-bounces@racket-lang.org</a><br>
&gt; [mailto:<a href="mailto:users-bounces@racket-lang.org">users-bounces@racket-lang.org</a>] On Behalf Of Sam Griff<br>
&gt; Sent: 06 July 2010 20:00<br>
&gt; To: <a href="mailto:users@racket-lang.org">users@racket-lang.org</a><br>
&gt; Subject: [racket] [htdp] Help with Exercise 12.4.2<br>
&gt;<br>
&gt; Hello. Like many others working through HtDP I have hit the<br>
&gt; wall at this exercise. I&#39;m not sure what I have so far is in<br>
&gt; line with the &quot;proper&quot; way to do this exercise and would<br>
&gt; appreciate any help/suggestions. Here is the code I have so far:<br>
&gt;<br>
&gt; ;; A list of words is either<br>
&gt; ;; 1. empty<br>
&gt; ;; 2. (cons w low)<br>
&gt; ;;    where w is a word and low is a list of words<br>
&gt;<br>
&gt; ;; arrangements : word  -&gt;  list-of-words ;; to create a list<br>
&gt; of all rearrangements of the letters in a-word (define<br>
&gt; (arrangements a-word)<br>
&gt;   (cond<br>
&gt;     [(empty? a-word) (cons empty empty)]<br>
&gt;     [else (insert-everywhere/in-all-words (first a-word)<br>
&gt;             (arrangements (rest a-word)))]))<br>
&gt;<br>
&gt; ;; Contract:<br>
&gt; ;; insert-everywhere/in-single-word : symbol word -&gt;<br>
&gt; list-of-words ;; Purpose:<br>
&gt; ;; to insert a symbol everywhere in a single word ;; Examples:<br>
&gt; ;; (insert-everywhere/in-single-word &#39;a empty) should produce<br>
&gt; (list &#39;a) ;; (insert-everywhere/in-single-word &#39;b (list &#39;a))<br>
&gt; should produce (list (list &#39;a &#39;b) (list &#39;b &#39;a)) ;;<br>
&gt; (insert-everywhere/in-single-word &#39;c (list &#39;a &#39;b)) should<br>
&gt; produce (list (list &#39;c &#39;a &#39;b) (list &#39;a &#39;c &#39;b) (list &#39;a &#39;b<br>
&gt; &#39;c)) ;; Template:<br>
&gt; ;; (define (insert-everywhere/in-single-word s w)<br>
&gt; ;;   (cond<br>
&gt; ;;     [(empty? w) ...]<br>
&gt; ;;     [else ... (first w) ...<br>
&gt; (insert-everywhere/in-single-word s w) ...]))<br>
&gt; (define (insert-everywhere/in-single-word s w)<br>
&gt;   (cond<br>
&gt;     [(empty? w) (list s)]<br>
&gt;     [else  (list (list s (first w)) (cons (first w)<br>
&gt; (insert-everywhere/in-single-word s (rest w))))]))<br>
&gt;<br>
&gt; ;; insert-everywhere/in-all-words : symbol list-of-words -&gt;<br>
&gt; list-of-words ;; to insert a symbol everywhere in a list of<br>
&gt; words (define (insert-everywhere/in-all-words s low)<br>
&gt;   (cond<br>
&gt;     [(empty? low) empty]<br>
&gt;     [else (append (insert-everywhere/in-single-word s (first<br>
&gt; low)) (insert-everywhere/in-all-words s (rest low)))]))<br>
&gt;<br>
&gt;<br>
&gt; ;; Tests:<br>
&gt; (define testword1 (list &#39;a))<br>
&gt; (define testword2 (list &#39;a &#39;b))<br>
&gt; (check-expect (insert-everywhere/in-single-word &#39;a empty)<br>
&gt; (list &#39;a)) (check-expect (insert-everywhere/in-single-word &#39;b<br>
&gt; testword1) (list (list &#39;b &#39;a) (list &#39;a &#39;b))) (check-expect<br>
&gt; (insert-everywhere/in-single-word &#39;c testword2) (list (list<br>
&gt; &#39;c &#39;a &#39;b) (list &#39;a &#39;c &#39;b) (list &#39;a &#39;b &#39;c)))<br>
&gt;<br>
&gt;<br>
&gt; Thanks,<br>
&gt;<br>
&gt; Sam<br>
&gt; _________________________________________________<br>
&gt;   For list-related administrative tasks:<br>
&gt;   <a href="http://lists.racket-lang.org/listinfo/users" target="_blank">http://lists.racket-lang.org/listinfo/users</a><br>
<br>
<br>
_________________________________________________<br>
  For list-related administrative tasks:<br>
  <a href="http://lists.racket-lang.org/listinfo/users" target="_blank">http://lists.racket-lang.org/listinfo/users</a><br>
</div></div></blockquote></div><br></div>