typestar

cond, when y unless en Lisp

cond es el condicional de varias ramas; when y unless cubren los casos de un solo lado.

;; cond walks its clauses in order and takes the first test that holds
(defun grade (score)
  (cond ((>= score 90) "A")
        ((>= score 80) "B")
        ((>= score 70) "C")
        ((>= score 60) "D")
        (t "F")))

(defparameter *scores* '(96 84 71 58))

;; when and unless are one-armed ifs, each with an implicit progn body
(dolist (score *scores*)
  (format t "~a maps to ~a~%" score (grade score))
  (when (>= score 90) (format t "  honor roll~%"))
  (unless (>= score 60) (format t "  retake scheduled~%")))

Cómo funciona

  1. grade prueba cuatro rangos en orden y cae en la cláusula (t "F") cuando ninguno coincide.
  2. Un dolist hace pasar por ahí cada puntaje de *scores*.
  3. when agrega una línea de cuadro de honor sobre 90 y unless marca un examen a repetir bajo 60.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
15
Caracteres a escribir
480
Tokens
102
Ritmo de tres estrellas
75 tpm

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

Escribe este fragmento

Paso 1 de 3 en Control de flujo; paso 7 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →