рддреЛ, F # рдХреА рд╣рдорд╛рд░реА рдпрд╛рддреНрд░рд╛ рдЬрд╛рд░реА рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦ F # рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ рдЬреЛ рдорд╛рдирдХ .NET рд╕рдордХрдХреНрд╖ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдкреЛрд╕реНрдЯ рдЯреБрдкрд▓реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред
рдЯреНрдпреВрдкрд▓реНрд╕ рдХреНрдпрд╛ рд╣реИрдВ
рдПрдХ рдЯрдкрд▓ рдЕрдирд╛рдо рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рдВрднрд╡рддрдГ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЯреБрдкрд▓реНрд╕ рдмрдирд╛рдирд╛
Tuples рдмрдирд╛рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рд╣рдо рдмрд╕ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП рдЬреИрд╕реЗ рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдЯреБрдкрд▓реНрд╕ рдХрд╛ рдПрдХ рдорд┐рд╢реНрд░рд┐рдд рдкреИрдХреЗрдЬ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╕рдВрдЦреНрдпрд╛рдПрдВ рд╣реИрдВ рдФрд░ рдЕрдиреНрдп рддрд╛рд░ рд╣реИрдВ, рдФрд░ рд╣рдо рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рднреА рдорд┐рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореЗрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
let a = (1,2) let b = (1,"cat") let c = (1,"cat") let d = (1,"cat", 'c')
рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рдЯреНрдпреВрдкрд▓
рдХрд╛рд░реНрдп рдЬреЛ рдЯреНрдпреВрдкрд▓реНрд╕ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рднреА рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЯреНрдпреВрдкрд▓ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдл # рдЬреИрд╕реА рдПрдХ рдЗрдВрдлрд╝реЗрдХреНрд╢рди рдкреНрд░рдгрд╛рд▓реА рдЦрд╝реБрд╢реА рд╕реЗ рдЯреБрдкрд▓ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЗрдВрд╕реБрд▓реЗрд╢рди рдХреЛ рд╕рдВрднрд╛рд▓ рд▓реЗрдЧреАред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
let someFunction tup = let (x,y) = tup printfn "x is %A and y is %A" xy do someFunction ("cat","dog") do someFunction (11,12)
рдФрд░ рдпрд╣рд╛рдВ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдКрдкрд░ рджрд┐рдП рдЧрдП рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ someFunction рдлрд╝рдВрдХреНрд╢рди рдиреЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рд╡рд┐рднрд┐рдиреНрди рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдЯреБрдкрд▓реНрд╕ рдХреЗ рд╕рд╛рде рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдФрд░ рдХрд╛рдо рдХрд┐рдпрд╛ред

рдЯрдкрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░
рдЕрдм рддрдХ, рд╣рдордиреЗ F # рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреА рд╕рдордЭ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рдЫреБрдЖ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдПрдХ рдРрд╕рд╛ рд╡рд┐рд╖рдп рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдПрдХ рдкреВрд░реА рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рд╕рдорд░реНрдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВ рдЬрд╣рд╛рдБ рд╣рдо рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН рдпрд╣рд╛рдБ рдФрд░ рдЕрднреА, рдФрд░ рд╣рдо tuples рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЕрдм рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ tuple рдХрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛ред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдореИрдВрдиреЗ FSI рд╡рд┐рдВрдбреЛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯреНрдпреВрдкрд▓реНрд╕ рдШреЛрд╖рд┐рдд рдХрд┐рдП рд╣реИрдВ:
let a = (1,2) let b = (1,"codfather") let c = (1,"c", 12.5)
рдФрд░ рдлрд┐рд░ рдореИрдВрдиреЗ рдПрдлрдПрд╕рдЖрдИ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЙрдирдХреА рдЬрд╛рдВрдЪ рдХреА; рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджреЗрдЦреЗрдВрдЧреЗ:
val a : int * int = (1, 2) val b : int * string = (1, "codfather") val c : int * string * float = (1, "c", 12.5)
рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рд╣рдо рдпрд╣рд╛рдВ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН:
- рдХреЛрд╖реНрдардХ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИрдВ
- рдПрдл # рдкреНрд░рдХрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рдЯрдкрд▓ рдореЗрдВ рдирд┐рд╣рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреА рд╣реИред
- рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдХреЛ "*" рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рддреЛ рдХреНрд░рд┐рд╕реНрдЯрд▓ рд╕реНрдкрд╖реНрдЯ рдЯрдкрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
let a = (1,2)
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реЛрдВрдЧреЗ:
int * int
рдЯрдкрд▓ рдЯреВрдЯрдирд╛
рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╣рдо рдХреИрд╕реЗ рдЯреНрдпреВрдкрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рд╡рд╛рдкрд╕ рддреЛрдбрд╝рдиреЗ рдпрд╛ рдбрд┐рдХреЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ред рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ? рд╣рд╛рдВ рдмрд┐рд▓реНрдХреБрд▓ред рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рдЖрдЗрдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
let (a,b) = (1,2) printfn "(a,b) = (1,2), so value of 'a' should be 1, and it is =%i,\r\n 'b' should be 2, and it is =%i" ab // , , , // let (_,z) = (1,2) printfn "grabbing last value from (1,2) which is = %i" z let (a,b :string) = (1,"cat") printfn "grabbing (1,\"cat\") which has values = %i %s" ab let (a :int,b :string) = (1,"cat") printfn "grabbing (1,\"cat\") which has values = %i %s" ab let (a ,b, c) = (1,"cat", 'c') printfn "grabbing (1,\"cat\",'c') which has values = %i %s %c" abc let first = fst (1, 2) printfn "grabbing fst from (1,2) which has values = %i" first let second = snd (1, 2) printfn "grabbing 2nd from (1,2) which has values = %i" second
рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдПрдХ рдорд╛рдирдХ рдХрдВрд╕реЛрд▓ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдореБрджреНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ:

рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП
рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣рд┐рд╕реНрд╕реЗ рдХреИрд╕реЗ рдорд┐рд▓реЗ? рдареАрдХ рд╣реИ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рдирд▓ рдерд╛:
(1,2)
рдФрд░ рдореИрдВ рдХреБрдЫ рдирдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рдореВрд▓реНрдпреЛрдВ рд╕реЗ рдмрдВрдзреЗ рд╣реБрдП рдЯрдкрд▓ рдХреЗ рджреЛрдиреЛрдВ "рдореВрд▓реНрдпреЛрдВ" рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд╣рдо рдмрд╕ рдпрд╣реА рдХрд░ рд╕рдХрддреЗ рдереЗ:
let (a,b) = (1,2)
рд╣рдо рдХреЗрд╡рд▓ рдЙрди рдореВрд▓реНрдпреЛрдВ рдХрд╛ рднреА рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЕрд╡рд╛рдВрдЫрд┐рдд рднрд╛рдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдореВрд▓реНрдп рдмрдВрдзрди рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
let (_,z) = (1,2)
рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЯреНрдпреВрдкрд▓ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдПрдХ рдЯреНрдпреВрдкрд▓ рд╕реЗ рдкрд╣рд▓рд╛ рдФрд░ рджреВрд╕рд░рд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд░реНрдерди рднреА рд╣реИред "
Fst " рдФрд░ "
snd " рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рддрддреНрд╡ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ (рдпреЗ рд╕рдВрднрд╡рддрдГ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рд╣реИрдВ)ред "
Fst " рдФрд░ "
snd " рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
let first = fst (1, 2) let second = snd (1, 2)
рдЕрдм рдореИрдВ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреА рдУрд░ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рд╣рдо рдЙрди рдореВрд▓реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдмреЗрдореЗрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рд╡реНрдпрдХреНрддрд┐рдЧрдд рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рд╡рд┐рд╕реНрдлреЛрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рддреЛ рдпрд╣ рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░рд╣ рдХреБрдЫ рд╣реЛрдЧрд╛:
let (a ,b) = (1,"cat", 'c')
рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ tuple рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 3 рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди Let рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдореЗрдВ рдХреЗрд╡рд▓ 2 рдорд╛рди рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдВрдХрд▓рдХ рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдиреАрдЪреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

рдирдИ рдирд▓рд┐рдпрд╛рдБ рдмрдирд╛рдирд╛
рдЖрдк рдореМрдЬреВрджрд╛ tuples рд╕реЗ рдирдП tuples рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
let oldOne = (1,2) let (x,y) = oldOne let newOne = (x+1,y+1) printfn "original = %A, and we did this (x+1,y+1)\r\n to obtain newOne = %A" oldOne newOne

рдЯреБрдкрд▓реНрд╕ рдХреА рддреБрд▓рдирд╛
рдЯреБрдкрд▓реНрд╕ рдХреЛ рд╕рдорд╛рди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐
- рдЙрдирдХреЗ рдкрд╛рд╕ рд╕рдорд╛рди рдорд╛рди рд╣реИрдВред
- рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдорд╛рди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпреЗ рдХрд╕реНрдЯрдо рд╕рдорд╛рди рддрд░реАрдХреЗ рдпрд╛ рдХрд╕реНрдЯрдо IEquitable рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдЗрд╕ рддрд░рд╣ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ)
рдЖрдЗрдП рдХреБрдЫ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред
printfn "(1,2) = (3,4) =% b" ((1,2) = (3,4)) printfn "(1,2) = (1,2) =% b" ((1,2) = (1,2)) printfn "('a', 'b') = ('a', 'b') =% b" (('a', 'b') = ('a', 'b')) printfn "('a', 'b') = ('a', 'c') =% b" (('a', 'b') = ('a', 'c'))

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрджрд┐ рдЖрдкрдХреЗ рдЯреНрдпреВрдкрд▓реНрд╕ рдХреА рд▓рдВрдмрд╛рдИ (рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рд╣реИ рдФрд░ рдЖрдк рд╕рдорд╛рдирддрд╛ рдСрдкрд░реЗрдЯрд░ "=" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓реЗрдЧреА:

рдЯрдкрд▓ рдорд┐рд▓рд╛рди рдкреИрдЯрд░реНрди
рд╣рдордиреЗ рдЕрднреА рддрдХ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдЯрд░реНрди рд╕реЗ рдирд┐рдкрдЯрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рд╣рдо рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдкреВрд░реА рдкреЛрд╕реНрдЯ рджреЗрдЦреЗрдВрдЧреЗред рдЗрд╕ рдмреАрдЪ, рдмрд╕ рдпрд╣ рдЬрд╛рди рд▓реЗрдВ рдХрд┐ рдпрд╣ рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдореИрдЪ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдЯреБрдкрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
let someFunction tup = match tup with | 1,2 -> printfn "you passed (1,2)" | _,_ -> printfn "you passed some other tuple" do someFunction (11,12) do someFunction (4,5) do someFunction (1,2) do someFunction (13,23)
