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 vector 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 map, 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 map.

Set

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

Il existe aussi des des set triés, pouvant être créé 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 Vector 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