title: Generate a list of unique permutations
body: <p>Say I have a list of 3 symbols : </p>
  
  <pre><code>l:`s1`s2`s3
  </code></pre>
  
  <p>What is the q-way to generate the following list of n*(n+1)/2 permutations?</p>
  
  <pre><code>(`s1;`s1),(`s1;`s2),(`s1;`s3),(`s2;`s2),(`s2;`s3),(`s3;`s3)
  </code></pre>
  
  <p>This can be seen as in the context of correlation matrix, where I want all the upper triangular part of the correlation matrix, including the diagonal.</p>
  
  <p>Of course the size of my initial list will exceed 3, so I would like a generic function to perform this operation.</p>
  
  <p>I know how to generate the diagonal elements:</p>
  
  <pre><code>q) {(x,y)}'[l;l]
  
  (`s1`s1;`s2`s2;`s3`s3)
  </code></pre>
  
  <p>But I don't know how to generate the non-diagonal elements.</p>