L'abstraction séquence

Un grand nombre de fonctions peuvent prendre en paramètre tout type de collections (vector, des list, map, set). Cela fonctionne grâce à une abstraction nommée séquence.

Toutes les séquences sont des collections.

Cette abstraction définit une façon d'accéder et d'itérer de façon ordonnée et optimisée sur une structure de donnée.

les collections Clojure peuvent être converties en séquence via la fonction seq.

D'ailleurs, si on regarde la description de la fonction first dans la documentation, on remarque que la fonction utilise seq:

Returns the first item in the collection. Calls seq on its argument. If coll is nil, returns nil.

La chose est vraie aussi pour la fonction rest.

Précédent - Suivant -

;; transform to seq
(println (seq [1 2 3]))
(println (seq {:foo 1 :bar 2}))
(println (seq #{1 2 3 4}) "\n")

;; get the first element
(println (first [1 2 3]))
(println (first #{1 2 3}))
(println (first {:foo 1 :bar 2}) "\n")

;; get the rest
(println (rest [1 2 3]))
(println (rest {:foo 1 :bar 2}) "\n")

;; add a value to the head of the collection and return a seq
(println (cons 4 [1 2 3]))
(println (cons 4 '(1 2 3)))
(println (cons [:bar 2] {:foo 1}))

powered by mcorbin - Available on Github