• Keine Ergebnisse gefunden

3.1 Money Makes The World Go Round

N/A
N/A
Protected

Academic year: 2022

Aktie "3.1 Money Makes The World Go Round"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Till Mossakowski Stephan Günther Funktionale Programmierung - Fortgeschrittene Konzepte und Anwendungen

WS 2019/20

3. Übungsblatt

Ausgabe: 03.11.19 Abgabe: 06.11.19

3.1 Money Makes The World Go Round

Anstatt eines Tante-Emma Ladens wie in der Vorlesung, modellieren wir in dieser Übung Grundzüge eines Casinos.

Konkret passiert dies in drei Schritten:

(1) Das Casino hat farbige Jetons1zu ein (Rot), fünf (Grün), zehn (Blau), fünfzig (Silber) und hundert (Gold) Euro. Beim Betreten des Casinos kann man Jetons für einen gewünschten Gesamtwert erwerben, und beim Verlassen die Jetons wieder in Euro umtauschen.

Modellieren Sie die Jetons mit einem AufzählungstypJeton, sowie eine Funktion welchen den Wert eines Jetons zurückgibt:

value :: Jeton → I n t

(2) Eine Sammlung von Jetons ist entweder leer, oder besteht aus einem Jeton und einer Sammlung weiterer Jetons. Modellieren Sie dies durch einen rekursiven DatentypJetons. Implementieren Sie außerdem zwei Funktionen

count :: Jetons → I n t payoff :: Jetons → I n t

welche die Anzahl der Jetons in einer Sammlung zählt, und die Jetons auszahlt, indem es den Wert der Sammlung (die Summe der Werte der einzelnen Jetons) in Euro zurückgibt.

(3) Zum Schluss müssen wir noch Jetons kaufen können. Dazu implementieren wir eine Funktion buy :: I n t → Jetons

die eine Sammlung von Jetons zurückgibt, die zusammen den angegeben Wert haben, und gleichzeitig möglichst klein ist (d.h. möglichst wenig Jetons enthält). So können wir¤16 durch Jetons zu 1, 5 und 10 Euro repräsentieren:

count (buy 16) 3 payoff (buy 16) 16 payoff (buy 187) 8 payoff (buy 187) 187

Generell soll gelten: wenns≥0dannpayoff (buy s)==s.

1Das sind die Spielmarken, mit denen gesetzt wird.

— Seite 1 von 2 —

(2)

3. Übungsblatt

Funktionale Programmierung - Fortgeschrittene Konzepte und Anwendungen WS 2019/20 ,

3.2 Datumsdatentyp

Implementieren Sie einen algebraischen DatentypDatebestehend aus Tag, Monat und Jahr. Implementieren Sie auch eine Funktiondate, die aus einer zulässigen Kombination von Tag, Monat und Jahr2ein Datum erzeugt:

data Date

date :: I n t → Int−> I n t →Maybe Date date 31 3 1985 Just . . .

date 29 2 1983 Nothing

Implementieren Sie außerdem eine Vergleichsoperation fürDateund eine Stringkonversion, welche das Datum im Formatdd.mm.yyyyanzeigt, und instanziieren Sie damit die TypklassenOrdundShow:

show ( fromJust ( date 23 3 786)) "23.03.0786"

date 15 1 1985≤date 16 1 1985 True date 1 9 1985≤date 11 7 1985 False

Implementieren Sie nun eine Funktion die Stringkonvertierungsfunktion fürDate, die das Datum im erweiter- ten ISO 8601 Format anzeigt.

iso8601 ( fromJust ( date 23 3 786)) "0786−03−23"

3.3 Datatypes & Typeclasses

• Auf Folie 11 des Foliensatzes zur zweiten Vorlesung wurdeBoolals “Der einfachste Aufzählungstyp”

bezeichnet. Können Sie einen noch einfacheren Aufzählungstyp definieren? Wo wird dieser Datentyp im Foliensatz zur letzten, also dritten, Vorlesung erwähnt?

• Implementieren SieEqundOrdInstanzen für Listen.

• Implementieren Sie eineNumInstanz fürBool.

3.4 * Bob’s Aulde Grocery Shoppe’s Kassenbon

Implementieren Sie die Ausgabe des Kassenbons für Bob’s Aulde Grocery Shoppe, so wie er auf Folie 30 des Foliensatzes für die zweite Vorlesung dargestellt wurde.

2Tag und Monat dürfen nicht null oder negativ sein, Monate nicht größer als 12 und Tage nicht mehr als Tage in dem jeweiligen Monat.

Beachten Sie insbesondere die korrekte Behandlung von Schaltjahren.

— Seite 2 von 2 —

Referenzen

ÄHNLICHE DOKUMENTE

costs incurred by obtaining the money from the old generation.. Whether a monetary equilibrium exists if the economy is finitely lived will be discussed shortly. First, we

Un sac contient 20 jetons qui sont soit jaunes, soit verts, soit rouges, soit bleus. On considère l’expérience suivante : tirer au hasard un jeton, noter sa couleur et remettre

Sie haben sich unglücklicherweise in den Jahren 1994 bis 1996 für eine Existenzgründung durch Pra- xisneueröffnung oder -über-... Aus dem bisherigen ma- roden und

Обозначивъ уголъ падешя черезъ г0, азимутъ луча падающаго обыкновеннаго черезъ а0, уголъ отражетя черезъ г/0в и азимутъ луча, отраженнаго необыкновеннаго,

Die Geschäfte des Casinos Golden Goose (Motto: “Zahlen und glücklich sein”) haben einen Aufschwung erlebt, seitdem der Betreiber für den Croupier am Roulette-Tisch einen

The quality of signature work produced by the council — including the Arctic Climate Impact Assessment — Scientific Report (Arctic Climate Impact Assessment 2005), the Arctic Human

This article examines the extent to which structural attributes of the Member States explain the conflict within the Council of Ministers in general as well as in selected policy

We take the whole of this body of work as read, in what we present here, for the simple reason that we do not have the time to repeat it. We do not repeat it also because we have