Directivas de format en Lisp
Las directivas de format son un lenguaje en miniatura para armar cadenas.
;; Format directives compose into a small string-building language.
(defvar *crew* (list "ada" "grace" "alan"))
(defvar *fuel* 128.4567)
;; ~a prints for people, ~d takes an integer, ~,2f rounds a float.
(defvar *status* (format nil "pilot ~a, ~d stop~:p, ~,2f liters"
(first *crew*) 3 *fuel*))
;; ~{...~} walks a list and ~^ drops the separator after the last item.
(defvar *roster* (format nil "~{~a~^, ~}" *crew*))
;; ~r spells a number out in English words.
(defvar *count* (format nil "~r crew member~:p aboard" (length *crew*)))
(format t "~a~%~a~%~a~%" *status* *roster* *count*)
Cómo funciona
~aimprime para personas,~dtoma un entero y~,2fredondea un flotante a dos decimales.~{~a~^, ~}recorre una lista, y~^quita el separador después del último elemento.~:ppluraliza a partir del argumento anterior y~rescribe un número en palabras.
Palabras clave y builtins usados aquí
defvarfirstformatlengthlist
El intento, en números
- Líneas
- 16
- Caracteres a escribir
- 591
- Tokens
- 65
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 60 segundos.
Paso 1 de 3 en Format y macros; paso 22 de 27 en Fundamentos del lenguaje.