Does F# have the ternary ?: operator?

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#.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)