Variables and functions are both defined with the let construct in F#.
Defining a integer variable
let a = 2;
printfn "%d"a;;
System.Console.ReadKey(true);
In the above snippet we defined an integer variable in F# with let constructs. In F# types automatically get inferred. In the preceding declaration, the type is automatically inferred as int.
Output
The other way we can use language construct is
let var = expr1 in expr2
we can evaluate the expr1 in expr2. First expr1 will get assigned to var1 and then will get evaluated to expr2.
Defining a function
Below we are defining a function called sqr. It is taking one parameter and calculating the square of the input parameter.
let sqr n = n*n;;
let a= sqr 5;;
printfn "%d"a;;
System.Console.ReadKey(true);
Output
Above we saw the input parameter to the function got inferred to int. If we want to override default inference of the type then we need to explicitly tell the language about the type of input parameter.
Defining a function with explicit type at input parameter
let sqr (n:float) = n*n;;
let a= sqr 5.5;;
printfn "%f"a;;
System.Console.ReadKey(true);
Output