Implementierung einer Funktion
Eine Funktion definieren und aufrufen
Ein möglicher Ausdruck zur Berechnung der Anzahl an Wandtattoos für eine konkrete Fläche lautet:
> floor (4.2 / 0.65) * floor (2.5 / 0.65)
18 : Int
Daraus lässt sich leicht die Funktion anzahlWandtattos
wird mit folgender
Funktionsdefinition ableiten.
anzahlWandtattoos zimmerbreite zimmerhoehe kantenlaenge =
floor (zimmerbreite / kantenlaenge) * floor (zimmerhoehe / kantenlaenge)
Hier werden die Funktionsvariablen zimmerbreite
, zimmerhoehe
und
kantenlaenge
- man nennt sie formale Parameter - benutzt,
um übergebene Daten zu verwalten.
Die Verarbeitung der Daten wird mit Hilfe eines Ausdrucks beschrieben:
floor (zimmerbreite / kantenlaenge) * floor (zimmerhoehe / kantenlaenge)
Beachte, dass der Ausdruck entweder direkt hinter das Gleichheitszeichen geschrieben wird oder - wie oben zu sehen - eingerückt (in der Regel um 4 Einheiten) in der nächsten Zeile.
Die Funktion wird mit einem Funktionsaufruf aktiviert. Hierzu werden die aktuellen Parameter an die Funktion übergeben.
> anzahlWandtattoos 4.2 2.5 0.65
18 : Int
Die Funktionsdefinition kann man zusammen mit Funktionsaufrufen in der REPL testen. Man gibt die Definition bzw. den Aufruf in die REPL ein. Elm liefert jeweils eine Rückmeldung.
> anzahlWandtattoos zimmerbreite zimmerhoehe kantenlaenge =
| floor (zimmerbreite / kantenlaenge) * floor (zimmerhoehe / kantenlaenge)
|
<function> : Float -> Float -> Float -> Int
> anzahlWandtattoos 4.2 2.5 0.65
18 : Int
Aufgabe 1
(a) Probiere das selbst aus. Nutze weitere Funktionsaufrufe, um die Zahl der benötigten Wandtattoos zu bestimmen.
(b) Elm hat erkannt, dass es sich um eine korrekte Funktionsdefinition handelt und die
Ausgabe <function> : Float -> Float -> Float -> Int
erzeugt.
Elm hat also die Signatur der Funktion automatisch erkannt.
Erkläre wie Elm hier die Signatur ableiten konnte.