The Functional FizzBuzz Kata
I think your implementation is fine. I might write it like this, because I find it more idiomatic in F# to avoid guards (when clauses) in pattern matching where a guard free implementation is equally concise.

let fizzbuzz x = 
    match (x % 5, x % 3) with
    | (0, 0) -&gt; "FizzBuzz"
    | (0, _) -&gt; "Buzz"
    | (_, 0) -&gt; "Fizz"
    | _ -&gt; string x

[1..100] |&gt; List.map fizzbuzz |&gt; List.iter (printfn "%s")


There are ways you can make this more elaborate / extensible but while that can be an interesting exercise I don't think they're really an improvement over a simple straightforward implementation like this.