if

In seiner einfachsten Form wertet if in Scheme einen Test aus und führt je nach Ergebnis einen von zwei Codeblöcken aus:

(if test-is-true
  do-this)
  • Bei #t wird der consequent ausgeführt (Wert zurückgeben oder Nebeneffekte).

Beispiel

(if (< 0 1)
  (lumi-message "True!"))
  • Test: (< 0 1) ist wahr.
  • (lumi-message "True!") wird ausgeführt.

Else-Zweig: if-else

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

So funktioniert es

  1. Test zuerst auswerten.
  2. Bei #t consequent, bei #f alternative.

Beide Blöcke können jeden gültigen Scheme-Ausdruck enthalten.

Beispiele

Beispiel 1: Wert zurückgeben

(if (< 0 1)
  1
  0)

Ergebnis: 1

Beispiel 2: begin-Block

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

Ergebnis: Gibt “False condition met, calculating…” aus und liefert 12.

Beispiel 3: let-Ausdruck

(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)))

Ergebnis: Gibt “True condition met, calculating…” aus und liefert -10.

Zusammenfassung

  • if wertet Tests aus und führt passende Blöcke aus.
  • Einfache Ausdrücke oder begin/let-Gruppen möglich.
  • Ohne explizites else nur consequent bei wahrem Test.