The semantics for this is the same as in F# (probably because F# is based on OCaml):

function
allows the use of pattern matching (i.e.
), but consequently it can be passed only one argument.function p_1 > exp_1  …  p_n > exp_n
is equivalent to
fun exp > match exp with p_1 > exp_1  …  p_n > exp_n

fun
does not allow pattern matching, but can be passed multiple arguments, e.g.fun x y > x + y
When either of the two forms can be used, fun
is generally preferred due to its compactness.
See also OCaml documentation on Functions.