s n h m r u
i

Vordefinierte Funktionen

Daten mit Funktionen verarbeiten

In den letzten Abschnitten hast du bereits mehrfach vordefinierte Funktionen benutzt, um Daten (hier: Zahlen) zu verarbeiten. So kann man die vordefinierte Funktion round benutzen, um eine Gleitkommazahl zu runden.

> round 3.5
4 : Int

In den weiteren Kapitel wirst du sehen, dass in Elm Datentypen bei Funktionen eine ganz zentrale Rolle spielen. Das sieht man bereits bei der Verwendung der Funktion round: Diese Funktion erzeugt aus einer Float-Zahl (wie z.B. 3.5) eine gerundete Int-Zahl (hier 4).

Typangaben erzeugen

Funktionen verarbeiten jeweils Daten eines bestimmten Datentyps und liefern als Ergebnisse Daten eines bestimmten Datentyps zurück. In der REPL erhält man die entsprechenden Datentyp-Informationen, wenn man nur den Funktionsnamen auswerten lässt.

> toFloat
<function> : Int -> Float
> round
<function> : Float -> Int
> floor
<function> : Float -> Int
> ceiling
<function> : Float -> Int

Eine Datentypangabe zu einer Funktion bezeichnet man auch als Signatur einer Funktion. Wir werden das in den weiteren Kapiteln noch genauer betrachten.

Aufgabe 1

Deute die Typangaben im oben gezeigten REPL-Dialog.

Rechenoperationen als Funktionen deuten

Die vordefinierten Rechenoperationen sind ebenfalls Funktionen. Das sieht man, wenn man die in Elm auch mögliche alternative Schreibweise für Rechenausdrücke betrachtet. Das Rechenzeichen wird - mit einer Klammer versehen - vor die zu verarbeitenden Zahlen geschrieben.

> (+) 2 4
6 : number
> (-) 2 4
-2 : number
> (*) 2 4
8 : number
> (//) 2 4
0 : Int
> (/) 2 4
0.5 : Float

Die Schreibweise mit dem Rechenzeichen vorneweg (wie bei (+) 2 4) nennt man Präfix-Schreibweise. Die Alltagsschreibweise mit dem Rechenzeichen in der Mitte (wie bei 2 + 4) nennt man Infix-Schreibweise.

Die Präfix-Schreibweise kann man benutzen, um die Typangaben (bzw. Signaturen) der betreffenden Rechenoperationen (als Funktionen) zu bestimmen.

> (+)
<function> : number -> number -> number
> (-)
<function> : number -> number -> number
> (*)
<function> : number -> number -> number
> (/)
<function> : Float -> Float -> Float
> (//)
<function> : Int -> Int -> Int

Die von Elm benutzten Typangaben bei Funktionen mit mehreren Übergabedaten ist gewöhnungsbedürfig (hat aber einen fachlichen Hintergrund, den wir an späterer Stelle erklären). Man könnte die Typangaben auch so schreiben:

(+) : number number -> number
(-) : number number -> number
(*) : number number -> number
(/) : Float Float -> Float
(//) : Int Int -> Int

Aufgabe 2

Deute die Typangaben - insbesondere zu den beiden Divisionsfunktionen. Ergänze hierzu die folgenden Sätze:

"Der Divisionsoperator / ist eine Funktion mit folgendem Verhalten: Wenn man zwei Float-Zahlen übergibt, dann gibt sie ... zurück."

"Der Divisionsoperator // ist eine Funktion mit folgendem Verhalten: ..."

Aufgabe 3

Wenn bei der Verwendung einer Funktion die Typvorgaben nicht beachtet werden, dann gibt es eine Fehlermeldung. Das hast du in den Beispielen in den vorangegangenen Abschnitten bereits gesehen. Welche der folgenden Rechnungen ergeben eine Fehlermeldung? Stelle zunächst Vermutungen auf und überprüfe sie anschließend in der REPL.

> 2 + 3.0
...
> 2 / 3
...
> 6.0 // 2
...
> -2 // 2
...
> (5 // 2) * (5 // 2)
...
> (5 // 2) / (5 // 2)
...
> (5 / 2) * (5 / 2)
...
> (5 / 2) // (5 / 2)
...

Suche

v
8.2.2.1.2.1.3
dev.inf-schule.de/deklarativ/fp_elm/elm_programme/datenobjekte/intfloat/lernstrecke/vordefiniertefunktionen
dev.inf-schule.de/8.2.2.1.2.1.3
dev.inf-schule.de/@/page/d03NFwEFGvEsHelE

Rückmeldung geben