In F# code I have a tuple:
let myWife=(\"Tijana\",32)
I want to access each member of the tuple separately. For instance this what I want to ac
Another quite useful thing is that pattern matching (just like when extracting elements using "let" binding) can be used in other situations, for example when writing a function:
let writePerson1 person =
let name, age = person
printfn "name = %s, age = %d" name age
// instead of deconstructing the tuple using 'let',
// we can do it in the declaration of parameters
let writePerson2 (name, age) =
printfn "name = %s, age = %d" name age
// in both cases, the call is the same
writePerson1 ("Joe", 20)
writePerson2 ("Joe", 20)
You can also write an unpack function for a certain length:
let unpack4 tup4 ind =
match ind, tup4 with
| 0, (a,_,_,_) -> a
| 1, (_,b,_,_) -> b
| 2, (_,_,c,_) -> c
| 3, (_,_,_,d) -> d
| _, _ -> failwith (sprintf "Trying to access item %i of tuple with 4 entries." ind)
or
let unpack4 tup4 ind =
let (a, b, c, d) = tup4
match ind with
| 0 -> a
| 1 -> b
| 2 -> c
| 3 -> d
| _ -> failwith (sprintf "Trying to access item %i of tuple with 4 entries." ind)
You can use the function fst to get the first element, and snd to get the second ekement. You can also write your own 'third' function:
let third (_, _, c) = c
Read more here: F# Language reference, Tuples
You want to prevent your wife from aging by making her age immutable? :)
For a tuple that contains only two members, you can fst
and snd
to extract the members of the pair.
let wifeName = fst myWife;
let wifeAge = snd myWife;
For longer tuples, you'll have to unpack the tuple into other variables. For instance,
let _, age = myWife;;
let name, age = myWife;;