Immutable recursive binary search of a generic array
I would strive for symmetry:

        match array.[guess] with
        | x when x &gt; target -&gt; search (min) (guess - 1) 
        | x when x &lt; target -&gt; search (guess + 1) (max) 
        | _ -&gt; guess