Fachkonzept - Vordefinierte Funktion
Vordefinierte Funktion als vorgegebene Verarbeitungseinheit
In den letzten Abschnitten haben wir bereits zahlreiche vordefinerte Funktionen benutzt.
Beispiel: Black-Box-Diagramme einer Funktion zum Runden
Die Funktion round
erzeugt aus einer Float
-Zahl die Int
-Zahl, die man durch Runden erhält.
Beispiel: Rechenoperation
Die Funktion (//)
erzeugt aus zwei übergebenen Int
-Zahlen die Zahl, die man bei der ganzzahligen Division erhält.
Beispiel: Länge einer Zeichenkette
Die Funktion String.length
erzeugt aus einer übergebenen Zeichenkette die Länge der Zeichenkette.
Beispiel: Codezahl eines Zeichens
Die Funktion Char.toCode
erzeugt aus einem übergebenen Zeichen die zugehörige Codezahl.
Beispiel: Verknüpfung von Wahrheitswerten
Die Funktion (&&)
erzeugt aus zwei Wahrheitswerten den Wahrheitswert, den man bei einer und-Verknüpfung erhält.
In allen diesen Beispielen werden mit Hilfe vordefinierter Funktionen aus übergebenen Daten neue Daten berechnet.
Eine vordefinierte Funktion ist eine vorgegebene Verarbeitungseinheit, die übergebene Datenwerte verarbeitet und einen daraus berechneten Datenwert als Funktionswert zurückgibt.
Im nächsten Kapitel werden wir uns noch intensiver mit Funktionen beschäftigen.
Datentypen und Funktionen
Funktionen erhalten beim Aufruf Werte verschiedener Datentypen und geben genau einen Wert eines bestimmten Datentyps zurück. Die Typen der Parameter und der Rückgabe erkennt man an der Signatur, die man z.B. erhält, wenn man in der REPL einfach den Funktionsnamen schreibt:
> round
<function> : Float -> Int
Bei Operatoren wie z.B. der ganzzahligen Division muss man die Präfix-Schreibweise in Klammern benutzen, um die Signatur experimentell zu ermitteln. Diese Schreibweise kann man auch nutzen, um Operatoren wie alle anderen Funktionen auch aufzurufen. Meist nutzt man aber die Infix-Schreibweise.
> (//) -- Präfix-Schreibweise
<function> : Int -> Int -> Int
> 10 // 3 -- Übliche Benutzung in Infix-Schreibweise
3 : Int
> (//) 10 3 -- Alternative Benutzung wie bei anderen Funktionen
3 : Int
Der rechteste Datentyp gibt immer den Rückgabetyp an, alle anderen die Datentypen der Parameter. Die Schreibweise wirkt eventuell etwas seltsam, macht aber Sinn, wie wir in späteren Kapiteln lernen werden.
Schreibweise bei vordefinierten Funktionen
Funktionen werden in Elm in Modulen organisiert. Das sind Einheiten, die u.a. Funktionen bereitstellen.
Funktionen wie z.B. round
aus dem besonders wichtigen Modul Basics
(siehe Elm - Basics) kann man direkt aufrufen.
Im Normalfall muss man aber den Modulnamen vor den Funktionsnamen schreiben wie z.B. bei
der Funktion toCode
aus dem Modul Char
(siehe Elm - Char).