Ответ Карстена охватывает большинство основ.Что касается объявления ограничения, в большинстве случаев вам не нужно объявлять его, так как оно будет выведено при любом использовании оператора сравнения.Например:
let myListMax l = l |> List.reduce (fun x y -> if x > y then x else y)
// or myListMax l = l |> List.reduce max
Как сказал Карстен, если вы хотите явно аннотировать определение с помощью ограничения, вы можете сделать это следующим образом:
let myListMax (l:'a list) : 'a when 'a : comparison = l |> List.reduce max