if

Dans sa forme la plus simple, if en Scheme évalue un test et, selon le résultat, exécute l’un de deux blocs de code :

(if test-is-true
  do-this)
  • Si #t, le consequent s’exécute (valeur ou effets de bord).

Exemple

(if (< 0 1)
  (lumi-message "True!"))
  • Test : (< 0 1) est vrai.
  • (lumi-message "True!") s’exécute.

Branche else : if-else

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

Comment ça marche

  1. Tester d’abord.
  2. Si #t consequent, si #f alternative.

Les deux blocs peuvent contenir toute expression Scheme valide.

Exemples

Exemple 1 : renvoyer une valeur

(if (< 0 1)
  1
  0)

Résultat : 1

Exemple 2 : bloc begin

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

Résultat : Affiche « False condition met, calculating… » et renvoie 12.

Exemple 3 : expression 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)))

Résultat : Affiche « True condition met, calculating… » et renvoie -10.

Résumé

  • if évalue un test et exécute le bloc adapté.
  • Expressions simples ou groupes begin/let.
  • Sans else explicite, seul le consequent si vrai.