title: Concatenating strings together into a list
body: <p>What I'm trying to do is that I want to take a list of strings as input and do some operations then  return back a list of strings. The problem is, I am looking for specific yet generic patterns of the string for each case:</p>
  
  <pre><code>func :: [String] -&gt; [String]
  func [] = []
  func [x] = [x]
  func (["Not","(","Not"]:es:[")"]) = es  --HERE
  func ("Not":"(":pred:"And":rest:")") = ("Not":pred:"Or":(pushNotInwards rest))
  func ("Not":"(":pred:"Or":rest:")") = ("Not":pred:"And":(pushNotInwards rest))
  func ("Not":"(":"ForAll":x:scope:")") = ("Exists":"Not":"("scope:")")
  func ("Not":"(":"Exists":x:scope:")") = ("ForAll":"Not":"(":scope:")")
  </code></pre>
  
  <p>For the third case for instance, I want to take a list of strings in the form of:</p>
  
  <blockquote>
    <p>["Not","(","Not",some_strings,")"]</p>
  </blockquote>
  
  <p>I tried using ++ on the left hand side as:</p>
  
  <pre><code>func (["Not"]++["("]++["Not"])++es++[")"]) = es
  </code></pre>
  
  <p>I also tried <code>concat</code> and <code>:</code> but they didn't work either. Any suggestions?</p>