typestar

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

  1. ~a imprime para personas, ~d toma un entero y ~,2f redondea un flotante a dos decimales.
  2. ~{~a~^, ~} recorre una lista, y ~^ quita el separador después del último elemento.
  3. ~:p pluraliza a partir del argumento anterior y ~r escribe un número en palabras.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 1 de 3 en Format y macros; paso 22 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →