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
- Tester d’abord.
- Si
#tconsequent, si#falternative.
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
elseexplicite, seul le consequent si vrai.