'Countdown' Numbers round - combine numbers arithmetically to reach a target
I have slightly simplified the generate function by merging the pairTwo function into the resulting seq computation expression. I refrained from merging the getExpressions function, as its functionality is distinct enough to warrant a separate function IMO.

let generate exprs =
    // for two given expressions, get possible combinations
    let getExpressions x y =
        let isDivisible x y =
            let denom = eval y
            denom &lt;&gt; 0 &amp;&amp; eval x % denom = 0

        let a,b = if x &gt; y then x,y else y,x
        seq {
            yield Multiply (x, y)
            yield Add (x, y)
            yield Subtract(a, b) // don't bother with negatives
            if isDivisible a b
                then yield Divide(a, b)
            yield x // yielding each partial result prevents near-misses getting lost
            yield y // although expands the search tree
        }

    let indexed = List.mapi (fun i x -&gt; i,x) exprs

    seq {
        for (i,x) in indexed do
        for (j,y) in indexed do
        if j &gt; i then
            for expr in getExpressions x y do
            yield expr :: [ for (k,z) in indexed do if k &lt;&gt; i &amp;&amp; k &lt;&gt; j then yield z ] }


I would still very much appreciate any and all critique!