OCaml/Krotki


Krotki (ang. tuples) to typ danych, który składa się z kilku elementów o tym samym lub różnym typie. Są to odpowiednio pary, trójki, czwórki etc. Do oddzielenia ich poszczególnych elementów używane są przecinki (w przeciwieństwie do średników używanych w listach). Dla zwiększenia czytelności często otacza się je nawiasami. W opisie typów pojawia się zamiast przecinka symbol gwiazdki '*'.

Mogą być używane do zwracania dwóch zmiennych przez funkcje, do definiowania list par elementów i w wielu innych zastosowaniach. Przykładowo:

# let func a = (a, "tekst");;
val func : 'a -> 'a * string = <fun>

(* Funkcja przyjmuje dowolny parametr; zwraca krotkę. *)
# func 5;;        
- : int * string = (5, "tekst")

# let one, two = func "inny";;
val one : string = "inny"
val two : string = "tekst"

# (4, 5.0) :: (10, 12.32) :: [];;
- : (int * float) list = [(4, 5.); (10, 12.32)]

Warto zauważyć, że w przeciwieństwie do list, w krotkach do oddzielenia kolejnych wyrażeń używa się przecinka (a nie średnika). Kod:

# [1, 2, 3, 4];;
- : (int * int * int * int) list = [(1, 2, 3, 4)]

Jak widać nie tworzy listy liczb, ale listę zawierającą krotki czterech liczb.