title: F# how to do List.map in parallel
body: <p>What is the most lightweight, terse way to run the following code in parallel within the standard F# libs? Or failing that any widely used additional libs?</p>
  
  <pre><code>let newlist = oldlist |&gt; List.map myComplexFunction
  </code></pre>
  
  <p>The best I could find was </p>
  
  <pre><code>let newlist = oldlist |&gt; List.map (fun x -&gt; async { return myComplexFunction x }
                        |&gt; Async.Parallel 
                        |&gt; Async.RunSynchronously
                        |&gt; Array.toList
  </code></pre>
  
  <p>I don't like this because it's 4 lines long and constructs an array that I then have to make back into a list. If I were working with Arrays it would be simple, Array.parallel, but I want to keep that lovely Immutable list functional purity. I just can't believe there is no list alternative, but so far have been unable to find one.
  Any good suggestions?</p>