Translate

lunes, 18 de enero de 2021

Primeros pasos con Clojure, parte 19


Seguimos con Clojure... 

Las listas son listas enlazadas secuenciales que agregan nuevos elementos al principio de la lista, en lugar de al final como vectores.

Debido a que las listas se evalúan invocando el primer elemento como una función, debemos agregar el ' para evitar la evaluación:

(def cards '(10 :ace :jack 9))

Las listas no están indexadas, por lo que se deben recorre accediendo al primero y al resto.

user=> (first cards)

10

user=> (rest cards)

'(:ace :jack 9)

conj se puede usar para agregar elementos a una lista al igual que con los vectores. Sin embargo, conj  agrega elementos al frente de las listas:

user=> (conj cards :queen)

(:queen 10 :ace :jack 9)

Las listas también se pueden usar como una pila con peek y pop:

user=> (def stack '(:a :b))

#'user/stack

user=> (peek stack)

:a

user=> (pop stack)

(:b)