when
En Scheme, if est polyvalent, mais sans else explicite il devient vite confus — surtout quand seule la branche vraie doit s’exécuter. Dans ce cas, when est plus clair et concis.
La forme de base de when :
(when test-is-true
do-this
do-that)- Si
#t, toutes les expressions du corps s’exécutent en séquence. - Si
#f, rien ne se passe ; aucune valeur n’est renvoyée.
Exemple
(when (< 0 1)
(lumi-message "Condition is true!")
(lumi-message "Executing additional actions."))Comparer if et when
Les deux ensemble dans le même exemple :
(if (= 0 1)
(lumi-message "This will not run")
(when (< 0 1)
(lumi-message "The 'when' condition is true!")
(lumi-message "Executing multiple actions within 'when'.")))Explication
if:(= 0 1)est faux, donc brancheelse.whendans leelse:(< 0 1)est vrai ; les deuxlumi-messages’exécutent.
Pourquoi when ?
- Pas de
elsevide ou factice. - Montre que seule la branche vraie compte.
Résumé
if: quand les deux branches comptent.when: branche vraie seule, plusieurs actions possibles.- Les combiner structure clairement des conditions complexes.