Operações de listas em Clojure


Diferente dos vetores, as listas não são indexadas, o que exige métodos específicos de busca linear.

Acesso via first e rest

Como não possuem índices, as listas devem ser percorridas utilizando as funções first e rest.

  • first: Retorna o primeiro item da lista (a cabeça).
  • rest: Retorna uma nova lista contendo todos os elementos, exceto o primeiro (a cauda).
(def cards '(10 :ace :jack 9))
 
;; Acessando o primeiro elemento
(first cards)
;; => 10
 
;; Obtendo o restante da lista
(rest cards)
;; => (:ace :jack 9)
 

Unir

No caso das listas, a função conj adiciona elementos sempre na frente (head).

(def lista-inicial '(:a :b))
 
(conj lista-inicial :c)
;; => (:c :a :b)
 
(conj '(:a :b) :c :d)
;; => (:d :c :a :b)
 

Referências


https://clojure.org/guides/learn/sequential_colls#_lists