Structures de données

La puissance de Clojure réside dans ses structures de données. Je montrerai ici les principales structures de données utilisées dans Clojure. Dans la section suivante, nous verrons les opérations possibles sur ces structures de données.

Je présenterai dans la suite de ce tutoriel les fonctions de base pour manipuler des structures de données. Mais il en existe de nombreuses autres, la librairie standard de Clojure étant très riche.

Vector

Les vectors sont définis entre [] ou via la fonction vector. Un vector peut être vu comme un array grandissant sur la droite (ce qu'on appelle communément une liste dans d'autres langages).

Clojure étant dynamiquement typé, vous pouvez mixer les types dans un vector (la chose est d'ailleurs vraie pour les autres structures de données).

Map

Les maps, définies entre {} ou via la fonction hash-map, sont des dictionnaires associant une clé à une valeur.

Les clés et valeurs peuvent être de tout type, mais par convention on utilise les keywords comme clé dans les maps.

Set

Les sets se définissent entre #{} ou via la fonction hash-set, et sont des collections de valeurs uniques.

Il existe aussi des des sets triés, pouvant être créés via la la fonction sorted-set.

List

Les listes se définissent entre '() ou via la fonction list. Les listes ont des caractéristiques différentes des vectors que nous découvrirons plus loin.

Précédent - Suivant -

;; vector
(println [1 2 3 4])
(println (vector 1 [2 2.2] "foo" "bar" true (+ 2 2 2)) "\n")

;; map
(println {"key1" "value1" "key2" "value2"})
;; you can use keywords for keys
(println {:key1 "value1" :key2 "value2"})
(println (hash-map :key1 "value1" :key2 [1 2 3]) "\n")

;; set
(println #{1 2 3 4})
(println (hash-set 1 2 3 4 4))
;; set from a vector
(println (set [1 1 2 3 3 3]) "\n")

;; list
(println '(1 2 3 4))
(println (list 1 2 "foo" "bar"))

Powered by mcorbin - Available on Github