Summations and products and factorials oh my
Some comments:

    |&gt; Seq.map f
    |&gt; Seq.sum


is just

Seq.sumBy f


Otherwise, if perf really matters I would avoid using Seq, and probably combine the map and fold in the product case.

Also, rather than

match (low, high) with
| (low, high) when low &lt;&gt; high -&gt;
    { low .. high } 
    |&gt; Seq.map f
    |&gt; Seq.sum
| (low, high) when low = high -&gt; 0.0


I would use an if to avoid the warning about incomplete pattern match so it would become

if low=high then 0.0
else   {low .. high} |&gt; Seq.sumBy f