• Keine Ergebnisse gefunden

1 Polymorpher Speicher 5 Punkte

N/A
N/A
Protected

Academic year: 2022

Aktie "1 Polymorpher Speicher 5 Punkte"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Fortgeschritten Techniken der Funktionalen Programmierung WS 09/10

1. ¨ Ubungsblatt

Ausgabe: 29.10.09 Abgabe: 12.11.09

Christoph L¨uth

1 Polymorpher Speicher 5 Punkte

Die in der Vorlesung gezeigte Implementation eines Speichers ist leider nur monomorph.

Implementieren Sie einen Speicher mit polymorphen Referenzen, der folgende Signatur besitzt (vergleichbar mit Data.IORef):

type Ref a −−Referenzen type S t a t e −−Zustand

type Mem = ST S t a t e −−Zustand

newRef : : Typeable a⇒ a→ Mem ( Ref a ) r e a d R e f : : Typeable a⇒ Ref a→ Mem a

w r i t e R e f : : Typeable a⇒ Ref a→ a→ Mem ( ) run : : Mem a→ a

Hierbei ist ST der aus der Vorlesung bekannte Zustands¨ubergangsmonade.

Ist der so implementierte Speicher typsicher, oder l¨aßt sich damit ’durch die Hintert¨ur’

eine Funktion coerce :: a→b implementieren, die beliebige Konversion des Argumentes zul¨aßt?

Hinweis: Die Klasse Typeablestammt aus dem Modul Data.Dynamic, das Ihnen bei der L¨osung der Aufgabe n¨utzlich sein kann.

2 Lost in Space 15 Punkte

Wir schreiben das Jahr 3039. Die Menschheit fliegt inzwischen zum Nachmittagskaffee nach Alpha Centauri, und man kann Wochenendaufenthalte im Orionnebel buchen, aber eines hat sich nicht gebessert: die Leute werfen immer noch leere Flaschen einfach aus dem Raumschiff — mit dem Pfand daf¨ur k¨onnte man sich eine goldenen Nase verdienen.

In dieser Aufgabe werden wir den beliebten PI3-Raumschiffsimulator um einige Zusatz- funktionalit¨aten anreichern. Es soll durch einen Weltraum fliegen, indem es Asteroiden, einzusammelndes Leergut und gefrorene Wasserstoffklumpen, n¨utzlich als Treibstoff, gibt, beim Fliegen soll es Wasserstoff verbrauchen, und wenn es mit Hindernissen kollidiert—

kabumm!

(2)

Im einzelnen sollen folgende Zusatzfunktionalit¨aten implementiert werden:

1. Die Welt soll prinzipiell beliebig groß (insbesondere gr¨oßer als der Bildschirm) sein.

2. Die Visualisierung im Raumschiffsimulator soll ge¨andert werden: das Raumschiff soll immer in der Mitte des Bildschirms sein, lediglich die Drehung wird visualisert, und die Umgebung bewegt sich.

3. Neben dem Raumschiff soll es auch Hindernisse geben:

• Asteroiden (wesentlich gr¨oßer als das Raumschiff);

• Wasserstoffklumpen (kleiner als das Raumschiff);

• Pfandleergut (etwa Gr¨oße der Wasserstoffklumpen).

Asteroiden k¨onnen sich langsam bewegen, die anderen Hindernisse sind station¨ar.

Das Raumschiff interagiert mit den Hindernissen: an Asteroiden zerschellt es, Was- serstoffklumpen und Leergut werden eingesammelt. Wasserstoff wird zu Treibstoff, das Leergut wird gesammelt.

4. Bei der Bewegung des Raumschiffs wird der Treibstoffverbrauch ber¨ucksichtigt: Be- schleunigung ben¨otigt Treibstoff, Drehung auch (aber weniger). Ohne Treibstoff treibt das Raumschiff ziellos.

Der Zustand des Raumschiffs soll neben Geschwindigkeit, Richtung und Schub auch noch Treibstoff und Punkte (f¨ur eingesammeltes Leergut) enthalten.

5. Eine weitere Zusatzfunktionalit¨at f¨ur das Raumschiff ist Bremssschub, der einfach r¨uckw¨arts wirkt (und nat¨urlich auch Treibstoff kostet).

6. Am Anfang muss die Welt zuf¨allig initialisiert werden; insbesondere die zuf¨allige Berechnung von Asteroiden als hinreichen konvexe Asteroiden ist nicht ganz trivial.

Wenn alles Leergut eingesammelt ist, ist das Spiel zu Ende — oder es wird eine neue Welt, mit mehr Asteroiden, ausgew¨urfelt (’next level’).

Dies ist Revision 594 vom 2009-10-29.

Referenzen

ÄHNLICHE DOKUMENTE

Sie verlieren sogar den Führerschein, wenn die Fahrer- laubnisbehörde wegen der unge- wöhnlich hohen Alkoholisierung eine medizinisch-psychologische Untersuchung (MPU) verlangt

Auf www.diepta.de finden Sie alle wichtigen Infos zur Teilnahme, zum Gewinn und was ein Flatlay eigentlich ist. Jetzt ist auch wieder die Zeit der

drückt werden und Betroffene nicht lernen, sich der Angst zu

Das Karlsru- her Institut für Technologie (KIT) und die Firma Ineratec, ein Spin-Off des KIT, erproben jetzt gemeinsam mit weiteren Part- nern aus Wirtschaft

Für Wasserstoff, welcher nicht direkt bei der Tankstelle produziert wird, wird aus Gründen der Vergleichbarkeit derselbe Transportaufwand angenommen, unabhängig

Seit vielen Jahren arbeitet der WWF im Tiefland des Teraibogens in Nepal. Gemeinsam mit anderen Partnern kümmert sich der WWF um den Erhalt dieses

SF Meteo erstellt während 24 Stun- den täglich von Montag bis Sonntag Unwettermeldungen, beispielswei- se für Hagel, Sturm und Hochwas- ser. Droht ein saisonal untypisches Unwetter

Durch die „Schraubenbewegung“ wird diese nach hinten weggedrückt, sodass sich die Schraube selbst nach vorne bewegt. Beim Düsentriebwerk wird über das Fan-Laufrad (außen links)