Rekursive Verarbeitung
Eine neue Liste konstruieren
In der Teilnehmerliste kommen einige Personen vor, die noch keine 18 Jahre alt sind. Für einige Exkursionen müssen diese Personen einen zusätzlichen Nachweis erbringen, dass sie auch tatsächlich an der Exkursion teilnehmen dürfen.
Mit einer Funktion mindestens18
soll eine neue Liste erzeugt werden, die alle Personen enthält, die mindestens 18 Jahre alt sind.
Signatur:
mindestens18: List Person -> List Person
Beispiele:
mindestens18 [{ alter = 16, ... },{ alter = 20, ... },{ alter = 18, ... }] ->
[{ alter = 20, ... },{ alter = 18, ... }]
Aufgabe 1
Zur Konzeption der Funktion mindestens18
verwenden wir Rekursion.
Erkläre die folgenden Reduktionsregel
Rekursionsanfang:
mindestens18 [] ->
[]
Rekursionsschritt - Fall 1:
mindestens18 { alter = 16, ... }::restliste ->
mindestens18 restliste
Rekursionsschritt - Fall 2:
mindestens18 { alter = 20, ... }::restliste ->
{ alter = 20, ... }::(mindestens18 restliste)
Aufgabe 2
Bei der Implementierung der Reduktionsregeln zur Funktion mindestens18
verwenden wir Mustervorgaben.
Ergänze die folgende Funktionsdefinition. Teste sie anschließend mit geeigneten Funktionsaufrufen.
module Teilnehmerliste exposing (..)
...
mindestens18: List Person -> List Person
mindestens18 liste =
case liste of
[] ->
...
e :: restliste ->
if e.alter >= 18 then
...
else
...
Aufgabe 3
Entwickle analog eine Funktion unter18
.