typestar

Vectores y arreglos en Lisp

Lee temperaturas diarias de un literal #(...) y escribe en un arreglo creado con make-array.

;; #(...) reads as a simple vector, and AREF indexes it from zero.
(defvar *highs* #(61 64 58 72 70))
(defvar *monday* (aref *highs* 0))
(defvar *thursday* (aref *highs* 3))

;; MAKE-ARRAY builds one at run time; :INITIAL-ELEMENT fills it, and
;; SETF AREF writes a slot. Never write into a #(...) literal.
(defvar *lows* (make-array 5 :initial-element 48))
(setf (aref *lows* 3) 55)

;; LENGTH and ELT accept any sequence, so the same call reads a
;; vector, a list, or a string.
(format t "~a days, monday ~a, thursday ~a/~a~%"
        (length *highs*) *monday* *thursday* (aref *lows* 3))
(format t "~a ~a ~a~%" (elt *highs* 1) (elt '(:rain :sun) 1)
        (elt "cloudy" 0))

Cómo funciona

  1. (aref *highs* 3) indexa desde cero el vector literal.
  2. (make-array 5 :initial-element 48) crea un vector escribible que (setf (aref *lows* 3) 55) actualiza.
  3. length y elt sirven en secuencias: (elt '(:rain :sun) 1) y (elt "cloudy" 0) leen una lista y una cadena.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
662
Tokens
93
Ritmo de tres estrellas
75 tpm

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

Escribe este fragmento

Paso 3 de 3 en Colecciones; paso 18 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →