Yes, it’s called if .. then .. else
In fact in F# everything is an expression, even an if .. then .. else block.
In C# var x = true ? 0 : 1;
In F# let x = if true then 0 else 1
So in your case:
let y = Seq.groupBy (fun x -> if x < p then -1 else if x = p then 0 else 1)
you can shorten it a bit with elif
let y = Seq.groupBy (fun x -> if x < p then -1 elif x = p then 0 else 1)
Another option to consider in F# specially when you have more than 2 cases is pattern matching:
let f p x =
match x with
| x when x < p -> -1
| x when x = p -> 0
| _ -> 1
let y = Seq.groupBy (f p)
But in your particular case I would use the if .. then .. elif .. then.
Finally note that the test-equality operator is = not == as in C#.