s n h m r u
i

Partielle Funktionsanwendung

Flexiblere Erhöhung der Noten

Es sollen verschiedene Erhöhungen der Noten getestet werden. Ein erster Ansatz könnte darin bestehen, dass man entsprechend viele Funktionen definiert:

erhoehenUm1 note =
    min 15 (note + 1)

erhoehenUm2 note =
    min 15 (note + 2)

erhoehenUm3 note =
    min 15 (note + 3)

...

Diese Funktionen können wir anwenden, um die Notenliste um einen bestimmten Wert zu erhöhen:

> List.map erhoehenUm1 notenliste
[15,8,13,11,15,5,9,14,11,8,6,3,10,10,13]
    : List number
> List.map erhoehenUm4 notenliste
[15,11,15,14,15,8,12,15,14,11,9,6,13,13,15]
    : List number

Offensichtlich ist dieser Ansatz nicht optimal, da man viele verschiedene Funktionen mit fast identischem Aufbau definiert. Es macht Sinn stattdessen eine Funktion zu definieren, die als weiteren Parameter den Wert, um den die Noten erhöht werden sollen, erhält.

erhoehenUm wert note =
    min 15 (note + wert)

Aufgabe 1

Erkläre warum wir diese Funktion so nicht anwenden können, um mit Hilfe von List.map eine Liste mit erhöhten Notenwerten zu berechnen.

Argumentiere mit der Zahl der Parameter, die wir bräuchten und der Zahl der Parameter, die wir haben.

Experimente in der REPL

Die folgenden Experimente helfen uns einen Weg zu finden, wie wir mit Hilfe der allgemeineren Funktion erhoehenUm dennoch unsere Aufgabe lösen können.

> erhoehenUm
...
> erhoehenUm 2
...
> f = erhoehenUm 2
...
> f
...
> f 9
...
> f 14
...
> List.map f notenliste
...
> (erhoehenUm 2) 9
...
> (erhoehenUm 2) 14
...
> List.map (erhoehenUm 2) notenliste
...

Beim Ausdruck erhoehenUm 2 wird die Funktion erhoehenUm mit einem Teil der notwendigen Parameter aufgerufen. Man spricht von partieller Funktionsanwendung.

Aufgabe 2

Formuliere eine Vermutung welche Ausgabe jeder Ausruck in der REPL bewirkt. Überprüfe deine Vermutung in der REPL.

Aufgabe 3

Flexible Analyse der Noten

Die Analyse der Noten soll ebenfalls flexibler werden. Dazu definieren wir folgende Funktionen:

noteUeber wert note =
    note > wert

noteZwischen von bis note =
    von <= note && note <= bis

Aufgabe 4

Formuliere einen Ausdruck, der alle Noten über 6 Punkten liefert.

Aufgabe 5

Formuliere einen Ausdruck, der alle Noten im Bereich zwischen 4 und 6 Punkten liefert.

Suche

v
8.2.2.3.1.1.6
inf-schule.de/deklarativ/fp_elm/elm_programme/listen/notenliste/lernstrecke/partiell
inf-schule.de/8.2.2.3.1.1.6
inf-schule.de/@/page/rsPI5B4QRLSJV9Th

Rückmeldung geben