[plt-scheme] HtDP newbie question, 12.4.2

From: Cooke Kelsey (cookekelsey at yahoo.com)
Date: Fri Mar 28 11:51:06 EDT 2008

OK, that helps me a little.  If I insert "cons (first word)," then I can rebuild the word:
   
  (define (cons-function word)
  (cond
    [(empty? (rest word)) word]
    [else (cons (first word) (cons-function (rest word)))]))
   
  (cons-function (list 'A 'T 'W)) = (list 'A 'T 'W)
   
  The problem is how to add this to a shrinking function:
   
  (define (shrinking-function s word)
  (cond
    [(empty? (rest word)) empty]
    [else (list (append (list s) word) (shrinking-function s (rest word)))]))

  (This shrinking function isn't exactly what I want, but at least it gives me (list 'X 'A 'T 'W) and (list 'X 'T 'W)).
   
  So I append them together: 
   
  (append (cons-function (list 'A 'T 'W)) (shrinking-function 'X (list 'A 'T 'W)))
   
  And I get this:
   
  (list (list 'X 'A 'T 'W) (list (list 'X 'T 'W) empty)) (list 'A 'T 'W (list 'X 'A 'T 'W) (list (list 'X 'T 'W) empty))
   
  Garbage!
   
  As a last resort, I try to combine cons and shrinking functions together:
   
  (define (cons+shrinking-function s word)
  (cond
    [(empty? (rest word)) word]
    [else (append (cons (first word) (cons+shrinking-function 'X (rest word))) (list s) (rest word))]))
   
  (cons+shrinking-function 'X (list 'A 'T 'W)) = (list 'A 'T 'W 'X 'W 'X 'T 'W)
   
  It looks kind of nice, but it is even further from the expected result.
   
  
Matthias Felleisen <matthias at ccs.neu.edu> wrote:
    

  How about (cons 'A (list 'X 'T)) = (list 'A 'X 'T)
  

  

  


  On Mar 28, 2008, at 10:53 AM, Cooke Kelsey wrote:
  (append (list 'A) (list 'X 'T)) = (list 'A 'X 'T)

Matthias Felleisen <matthias at ccs.neu.edu> wrote:     

  Here is a definition of 'adding in the missing element': 
  

  * If a list X misses the symbol 'A (at the front), how do you get a list that has the 'A and all of X? 
  

  * X = (list 'X 'T) and 'A --> I want (list 'A 'X 'T). How do I do that? 
  

  -- Matthias
  

  

  
---------------------------------
  Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now.



       
---------------------------------
Never miss a thing.   Make Yahoo your homepage.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20080328/c51dc4b0/attachment.html>

Posted on the users mailing list.