title: How to define a type parameter list?
body: <p>given this following type and its member implementation of <code>apply</code> </p>
  
  <pre><code>type Result&lt;'TSuccess, 'TError&gt; =
      | Success of 'TSuccess
      | Error of 'TError
      with
      member this.apply (fn:'a) : 'b =
          match (fn, this) with
          | Success(f), Success(x) -&gt; Success(f x)
          | Error(e), Success(_) -&gt; Error(e)
          | Success(_), Error(e) -&gt; Error(e)
          | Error(e1), Error(e2) -&gt; Error(List.concat [e1;e2]);;
  </code></pre>
  
  <p>I get this warning (among others)</p>
  
  <pre><code>  member this.apply (fn:'a) : 'b =
           -----------^^^^
    /Users/robkuz/stdin(385,12): warning FS0064: This construct causes code to 
    be less generic than indicated by the type annotations. The type variable 
    'TError has been constrained to be type ''a list'.
  </code></pre>
  
  <p>And this error</p>
  
  <pre><code>type Result&lt;'TSuccess, 'TError&gt; =
  -----------------------^^^^^^^
  /Users/robkuz/stdin(381,24): error FS0663: This type parameter has been used 
  in a way that constrains it to always be ''a list'
  </code></pre>
  
  <p>I tried to change it to </p>
  
  <pre><code>type Result&lt;'TSuccess, 'TError list&gt; =
  </code></pre>
  
  <p>and</p>
  
  <pre><code>type Result&lt;'TSuccess, List&lt;'TError&gt;&gt; =
  </code></pre>
  
  <p>both giving me a syntax error.</p>
  
  <p>What can I do to fix this?</p>