<div><br></div><br><div class="gmail_quote">On Sun, Apr 26, 2009 at 2:19 PM, S Brown <span dir="ltr">&lt;<a href="mailto:ontheheap@gmail.com">ontheheap@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

I&#39;ve been trying to do this exercise all evening. Actually, I started<br>
this morning but got so frustrated that I took my dogs to the park to<br>
blow off some steam! I&#39;ve already read through an archived discussion<br>
of this exercise from back in June/July of 2006 from this group, it&#39;s<br>
helped a little, but I don&#39;t think I would have gotten even this far<br>
without having found that thread. So... I&#39;m just looking for someone<br>
(s) who would be nice enough to help me figure out how to solve this<br>
exercise using the design recipes.<br>
<br>
This is what I have so far:<br>
<br>
1.The exercise is asking me to define the function insert-everywhere/<br>
in-all-words, which receives as it&#39;s arguments a symbol and a list-of-<br>
words, and then returns a list-of-words where the symbol has been<br>
placed before and after each letter in each word of the list-of-words.<br>
So:<br>
<br>
So, given:<br>
(insert-everywhere/in-all-words &#39;s (list (list &#39;m &#39;e) (list &#39;x)))<br>
<br>
The result should be:<br>
(list (list &#39;s &#39;m &#39;e)<br>
      (list &#39;m &#39;s &#39;e)<br>
      (list &#39;m &#39;e &#39;s)<br>
      (list &#39;s &#39;e &#39;m)<br>
      (list &#39;e &#39;s &#39;m)<br>
      (list &#39;e &#39;m &#39;s)<br>
      (list &#39;s &#39;x)<br>
      (list &#39;x &#39;s))<br>
<br>
2. The book defines a word as either:<br>
     1. empty, or<br>
     2. (cons s w), where s is a symbol (&#39;a&#39; thru &#39;z&#39;) and w is a word<br>
<br>
     So, some examples of words are: empty, (cons &#39;i empty), and (cons<br>
&#39;h (cons &#39;i empty))<br>
<br>
3. I have defined a list-of-words as either:<br>
    1. empty<br>
    2. (cons w low), where w is a word, and low is a list of words<br>
<br>
   So, some examples of lists of words are:<br>
             (cons empty empty)<br>
             (cons<br>
                (cons &#39;h (cons &#39;i empty))<br>
                empty)<br>
             and,<br>
             (cons<br>
                (cons &#39;h (cons &#39;i empty))<br>
                (cons &#39;b (cons &#39;o (cons &#39;b empty)))<br>
                empty)<br>
<br>
4. My header/contract and template for insert-everywhere/in-all-words:<br>
<br>
;; insert-everywhere/in-all-words: symbol list-of-words  -&gt;  list-of-<br>
words<br>
;; to create a list-of-words like a-low, but with the symbol s<br>
inserted at<br>
;; the beginning, end, and in-between each letter of each word in the<br>
list-of-words in a-low<br>
(define (insert-everywhere/in-all-words s a-low)<br>
  (cond<br>
    ((empty? a-low) ... s ...)<br>
    (else ... s ... (first a-low) ...<br>
            ... (insert-everywhere/in-all-words s (rest a-<br>
low)) ... )))<br>
<br>
<br>
OK, as I am understanding the design recipe, I should at this point<br>
start filling in each line of the cond expression.<br>
<br>
I started with the easy one, the empty case, which is interesting<br>
because (list (list)), which is a list-of-words where the only word is<br>
empty, is not the same thing as just plain &#39;ol empty. So, (empty?<br>
(list (list))) is false, so this empty? case is only concerned with<br>
(list), and in this case the correct response, I believe, is to just<br>
return empty.<br>
<br>
Next, I looked at the first line of else, ... s ... (first a-low) ...,<br>
now I know that in the example above that (first a-low) becomes (list<br>
&#39;m &#39;e), so all I need to do with the s is just add it to the<br>
beginning, and I can do that using append, so I know that line can<br>
become (append (list s) (first a-low)). Or in the case of (list<br>
(list)), it becomes (append &#39;s (cons empty empty)) or just (cons &#39;s<br>
empty), which I think is what I want.<br>
<br>
And now my brain melts and I have no idea what to do next. All I&#39;ve<br>
done is add the symbol to the beginning of the word, but what about<br>
the rest of it? If I go to the next line, I&#39;m just working on the next<br>
word in the list-of-words, so where am I ever going to do the work<br>
needed to put the symbol between the rest of the letters??? Am I even<br>
on the right track with this? I don&#39;t want to continue with HTDP<br>
without understanding this exercise! Can anyone help?<br>
_________________________________________________<br>
  For list-related administrative tasks:<br>
  <a href="http://list.cs.brown.edu/mailman/listinfo/plt-scheme" target="_blank">http://list.cs.brown.edu/mailman/listinfo/plt-scheme</a><br>
</blockquote></div><br>Hello,<div><br></div><div>I&#39;ve also been through this problem and I also had a hard time filling in the templates given by HtDP that time. And I think you are making the mistake I did that time.</div>

<div><br></div><div>Have you tried creating helper/auxillary functions? If not then don&#39;t hesitate to create them as described in as early as section 3. From my HtDP experience, I&#39;ve figured out that the template only provides you with the &quot;general structure&quot; of the <span class="Apple-style-span" style="font-weight: bold;">main</span> function. It does not forbid you to create helper functions. And if I remember properly, you&#39;re going to create a whole legion of helper functions. But, of course, that is just <span class="Apple-style-span" style="font-style: italic;">an</span> answer and not <span class="Apple-style-span" style="font-style: italic;">the</span> answer.</div>

<div><br></div><div>(When creating helper functions, I find it easier to decompose the problem first in a pseudocode. That&#39;s when I realize what the &quot;logical divisions&quot; of my task are. For each logical division, I create one helper function.)<br>

</div><div><br></div><div>You took your dog for a walk earlier? That&#39;s good thinking. The beginner&#39;s mind is a fresh place to come from.</div><div><br></div><div>Good luck.</div>-- <br>Chad Estioco<br>BS Computer Science (ongoing)<br>

University of the Philippines-Diliman<br>==============================<br><a href="http://www.geocities.com/lokisky_walker">http://www.geocities.com/lokisky_walker</a><br>