Doch, in allen Beispielen hat
if
einen Rückgabewert, alle Beispiele zeigen echteif
-Ausdrücke.if vermittelt eine Wertzuweisung, so würde ich das eher formulieren. if selbst kann außer true oder false (sog. Boolsche Werte) keinen anderen Wert liefern
Das ist wieder falsch. if
-Ausdrücke kriegen drei Argumente übergeben: einen boolschen Wert für die Bedingung, und jeweils einen Wert für den positiven und negativen Fall. Der Typ des Rückgabewerts ergibt sich dann aus dem jeweils eingetroffenen Fall. Der vollständige Typ des Ausdrucks besteht also aus vier Komponenten: drei für die Argumente und einen für den Rückgabewert. In Haskell Typdnotation sieht der Typ für if
s zum Beispiel so aus: forall t. (Bool, t, t) -> t
. Das heißt, für jeden beliebigen Typen t
übergibt man dem Ausdruck zunächst einen boolschen Wert, dann zwei Werte vom Typ t
und produziert schließlich einen Rückgabewert, der ebenfalls den Typen t
hat.