title: Stripping duplicate elements in a list of strings in elisp
body: <p>Given a list such as</p>
  
  <pre><code>(list "foo" "bar" nil "moo" "bar" "moo" nil "affe")
  </code></pre>
  
  <p>how would I build a new list with the duplicate strings removed, as well as the <code>nil</code>s stripped, i.e.</p>
  
  <pre><code>(list "foo" "bar" "moo" "affe")
  </code></pre>
  
  <p>The order of the elements needs to be preserved - the first occurence of a string may not be removed.</p>
  
  <p>The lists I'm dealing with here are short, so there's no need to use anything like a hash table for the uniqueness check, although doing so certainly wouldn't hurt either. However, using <code>cl</code> functionality is not a viable option.</p>