typestar

def y nombres en Clojure

Nombra el inventario de un puesto de mercado con def y deriva un valor de los otros.

;; def interns a name in the namespace; names use hyphens, not camelCase
(def stall-name "Ridgeline Orchard")
(def crates-on-hand 12)
(def apples-per-crate 40)

;; a def can be computed from names defined above it
(def apples-on-hand (* crates-on-hand apples-per-crate))

;; a trailing ? marks a name that answers yes or no
(def restock-needed? (< crates-on-hand 15))

;; a trailing ! marks a name tied to something that changes
(def sold-today! (atom 0))
(swap! sold-today! + 96)

(println stall-name "has" apples-on-hand "apples")
(println "restock?" restock-needed? "- sold" @sold-today!)

Cómo funciona

  1. (def stall-name "Ridgeline Orchard") registra un nombre en el espacio de nombres, con guiones y no en camelCase.
  2. apples-on-hand se calcula como (* crates-on-hand apples-per-crate) a partir de los dos def de arriba.
  3. restock-needed? termina en pregunta por un sí o no, y sold-today! en admiración por el átomo que actualiza swap!.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
17
Caracteres a escribir
591
Tokens
66
Ritmo de tres estrellas
75 tpm

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

Escribe este fragmento

Paso 1 de 3 en Valores y vinculaciones; paso 1 de 27 en Fundamentos del lenguaje.

Siguiente →