F# doesn’t support function overloads, so you cannot write the following
let add a b = a + b let add a b c = a b + c
However one thing we could do is implement a discriminated union, for example
type Addition =
| Two of int * int
| Three of int * int * int
let add param =
match param with
| Two (a, b) -> a + b
| Three (a, b, c) -> a + b + c
Now to call the function using this code we’d write
let a = add <| Three(1, 2, 3) // or let a = add (Three(1, 2, 3))
in C# we would use
var a = Dsl.add(Dsl.Addition.NewThree(1, 2, 3));