Appendix. Quick Reference – F# Language Constructs

 

Primitive Expressions

sin(3.1415) Calling a single-parameter function (parentheses optional)
max 2 4 Calling a function with multiple parameters (3.1.2, 5.5.3)
fst(2, "two") Calling a function that takes parameters as a tuple (4.4.2)
new System.Random() Creating an instance of an F# (9.4) or .NET object (4.4.1)
rnd.Next() Calling an F# member (9.4) or .NET method (4.4.2)
fun a -> a + 10 Creating a function using the lambda syntax (3.4, 5.5.1)
(3, "three") Creating a tuple value with two members (3.2.1, 5.2)
() Tuple with zero members; also called unit value (3.1)
Some(10) Creating a value of a discriminated union (5.3.4)
rnd :> Object Safe type conversion to a base class (9.4.2)
someObj :?> Random Dynamic type cast to a derived class or interface (9.4.2)
someObj :? Random Dynamic type test returning a Boolean value (9.4.2)
if n > 0 then +1 else -1 If expression that returns a value of type int (2.2.4)
if n > 0 then printf "+" Imperative if expression that returns a unit value
10::[] Creating a list with a head (value) and a tail (list) (3.3.2)
[3; 9; 4; 2; 5; 5 ] Creating a list by enumerating elements (3.3.2)
[| 1 .. 20 |] Creating an array from a number sequence (10.2.3)
buffer.[n] Accessing the nth element of an array (10.2.3)
seq { yield 10 } Creating a collection using sequence expression (12.1.3)

Patterns

_ Underscore pattern that matches any value (3.2.4)
42 Matches when the value equals the specified constant
Some(n) Pattern matching on discriminated union cases (5.3.2)
(a, b, c) Decomposes a tuple value into its components (3.2.4)
[] Matches an empty list (3.3.2)
head::tail Decomposes a nonempty list into its head and tail (3.3.2)
[a; b; c] Matches a list that contains three elements and decomposes it (4.4.2)
(a, b)::tail Nested pattern matching on list of tuples (4.2.2)