if

En su forma más simple, if en Scheme evalúa una prueba y, según el resultado, ejecuta uno de dos bloques de código:

(if test-is-true
  do-this)
  • Si #t, se ejecuta el consequent (valor o efectos secundarios).

Ejemplo

(if (< 0 1)
  (lumi-message "True!"))
  • Prueba: (< 0 1) es verdadera.
  • Se ejecuta (lumi-message "True!").

Rama else: if-else

(if test
  do-this
  else-do-this)
(if test
  consequent
  alternative)

Cómo funciona

  1. Evaluar la prueba primero.
  2. Si #t consequent, si #f alternative.

Ambos bloques pueden ser cualquier expresión Scheme válida.

Ejemplos

Ejemplo 1: devolver un valor

(if (< 0 1)
  1
  0)

Resultado: 1

Ejemplo 2: bloque begin

(if (= 0 1)
  (begin
    (lumi-message "This won't run")
    1)
  (begin
    (lumi-message "False condition met, calculating...")
    (* 3 4)))

Resultado: Imprime “False condition met, calculating…” y devuelve 12.

Ejemplo 3: expresión let

(if (= 1 1)
  (let (x -1)
    (lumi-message "True condition met, calculating...")
    (* x 10))
  (let (y 4)
    (lumi-message "This won't run")
    (* 3 y)))

Resultado: Imprime “True condition met, calculating…” y devuelve -10.

Resumen

  • if evalúa pruebas y ejecuta el bloque adecuado.
  • Expresiones simples o grupos begin/let.
  • Sin else explícito, solo consequent si es verdadero.