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
(+ 2 3)evalúa a 5 mientras que'(+ 2 3)sigue siendo una lista de tres elementos.'(monday tuesday wednesday)trata los símbolos como datos:secondlos alcanza ysymbol-namelos lee.eqes cierto para dos referencias a'mondayy falso para dos listas nuevas queequalacepta.
Palabras clave y builtins usados aquí
defparametereqequalformatlistsecond
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.
Paso 3 de 3 en Listas y celdas cons; paso 6 de 27 en Fundamentos del lenguaje.