typestar

El quote en Lisp

Un quote es la diferencia entre ejecutar (+ 2 3) y quedarte con la expresión.

;; quote holds a form back instead of running it
(defparameter *sum* (+ 2 3))
(defparameter *unrun* '(+ 2 3))
(format t "evaluated ~a, quoted ~a~%" *sum* *unrun*)

;; symbols are ordinary data once quoted, not just names of variables
(defparameter *weekdays* '(monday tuesday wednesday))
(format t "second day: ~a~%" (second *weekdays*))
(format t "spelled out: ~a~%" (symbol-name 'friday))

;; eq asks whether two things are the same object, equal compares shape
(format t "eq on symbols: ~a~%" (eq 'monday 'monday))
(format t "eq on fresh lists: ~a~%" (eq (list 1 2) (list 1 2)))
(format t "equal on fresh lists: ~a~%" (equal (list 1 2) (list 1 2)))

Cómo funciona

  1. (+ 2 3) evalúa a 5 mientras que '(+ 2 3) sigue siendo una lista de tres elementos.
  2. '(monday tuesday wednesday) trata los símbolos como datos: second los alcanza y symbol-name los lee.
  3. eq es cierto para dos referencias a 'monday y falso para dos listas nuevas que equal acepta.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
14
Caracteres a escribir
651
Tokens
103
Ritmo de tres estrellas
70 tpm

Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 88 segundos.

Escribe este fragmento

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

← Anterior Siguiente →