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
- Evaluar la prueba primero.
- Si
#tconsequent, si#falternative.
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
ifevalúa pruebas y ejecuta el bloque adecuado.- Expresiones simples o grupos
begin/let. - Sin
elseexplícito, solo consequent si es verdadero.