title: string-append inside recursive function
body: <p>Given a structure <code>layer</code> defined:</p>
  
  <pre><code>(define-struct layer [color doll])
  </code></pre>
  
  <p>I am trying to write a function that will produce a string of colors of all the dolls.</p>
  
  <pre><code>; colors: Russian doll (RD) -&gt; String
  ; consumes an RD and produces a string of all colors
  (define (colors an-rd)
     (cond
         [(string? an-rd) (string-append an-rd ",")]
         [else
            (colors (layer-doll an-rd))]))
  
  (colors
    (make-layer
     "yellow"
      (make-layer
        "green" "red")))
  </code></pre>
  
  <p>I would like for <code>colors</code> function, given the above input, to produce <code>yellow, green, red</code>; however, it only returns <code>red</code>. What am I doing wrong here?</p>