typestar

Construir listas en Lisp

Hacer crecer una lista de pistas con push y luego enderezarla con reverse y append.

;; push grows a list at the front, so the additions come out backward
(defparameter *playlist* (list "aja" "deacon blues"))
(push "peg" *playlist*)
(push "home at last" *playlist*)

;; reverse undoes that order and append joins on a closing track
(defparameter *encore* (append (reverse *playlist*) (list "josie")))

(defun announce (tracks)
  (format t "~a tracks, opening with ~a~%" (length tracks) (first tracks))
  (dolist (track tracks)
    (format t "  - ~a~%" track)))

(announce *encore*)

Cómo funciona

  1. Cada push agrega al frente de *playlist*, así que las pistas se apilan al revés.
  2. (append (reverse *playlist*) (list "josie")) restaura el orden y suma una pista de cierre.
  3. announce informa length y first, y luego recorre toda la lista con dolist.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
14
Caracteres a escribir
488
Tokens
73
Ritmo de tres estrellas
75 tpm

Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 58 segundos.

Escribe este fragmento

Paso 2 de 3 en Listas y celdas cons; paso 5 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →