Li

Listas en Common Lisp

15 ejercicios

Acerca de Listas

Las listas son un tipo de datos muy común en Common Lisp. Están formadas por una secuencia de celdas cons. Cada car es un elemento de la lista y cada cdr es la siguiente celda cons o un átomo terminal.

Una lista que termina con la lista vacía se llama «lista propia».

Una lista que termina con un átomo que no es la lista vacía se llama «lista punteada» (por cómo se imprime: (cons 'a 'b) ;=> (a . b)).

Una lista también puede ser circular si el cdr de alguna celda cons apunta a una celda cons posterior. Por ejemplo: (let ((x (list 1))) (setf (cdr x) x) (write x :stream t :circle t) :done). Ten cuidado al trabajar con listas circulares, ya que permitir que se impriman sin enlazar *print-circle* a t provocará un bucle infinito y bloqueará el REPL (en este ejemplo, al especificar :circle t a write, *print-circle se enlazará a t).

Combinar listas

Puedes llamar a append con cualquier número de listas, incluido 1 o 0:

(append '(a b c) '(1 2 3)) ; => (A B C 1 2 3)
(append '(a b c) '()))     ; => (A B C)
(append '(a b c))          ; => (A B C)
(append)                   ; => ()

Como alternativa a append está nconc, que da el mismo resultado pero tiene el efecto secundario de modificar las listas. Debes tener cuidado al usar nconc, ya que puede tener efectos sorprendentes.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva

Aprende Listas

La práctica está bloqueada

Desbloquea 5 ejercicios más para practicar Listas