cubimst DP-D gallons
Wir werden uns nur einen Jahr
Zumindest von den pro-Datentypen, die wir uns die letzte Zeit angeguckt hatten.
Und zunächst einmal ein stark anreichendes Thema.
Wir werden sehen, dass wir das Thema Datentypen hier vielleicht mal wiederfinden.
Es geht sich um eine Erweiterung des Typ-Systems für den Lambda-Kalkül.
Ihr habt ja schon ein Typ-System gesehen.
Einfaches Typ-Lambda-Kalkül, wo es nur einen Funktionstückkonstruktor gab und sonst nichts.
Und wir reichern das Typ-System jetzt um ein neues Feature an.
Ich habe letztens mal angeguckt, dass es in F ist etwas, das ist systematisch erfunden worden.
Das ist natürlich ein Spruch, den der Erfinder, der GIGARA, später gewissen hat,
dass er in den Würden der 75er oder so Geld braucht.
Und deswegen ist das System erfunden. Er hat es nicht ganz alleine erfunden,
sondern es ist gleichzeitig erfunden worden von...
Erstens eben der GIGARA und zweitens...
... eben nicht mit der witzigen Jobreder.
Ja, gut, das ist also das Feature, was jetzt in System F zum Lambda-Kalkül hinzugefügt wird.
Der Funktion, den es geht, ist Polymorphie.
Was heißt Polymorphie? Polymorphie heißt, ich habe einen syntaktischen Bezeichner für eine bestimmte Funktion,
aber auch verschiedene Typen anwenden. Sehen wir uns mal ein Beispiel der da.
So, jetzt werde ich tatsächlich mal ein bisschen Java anschreiben,
sie dürfen korrigieren, wenn ihr so lässt. Ganz stimmt.
Also, in Java ist eine Möglichkeit, zumindest eine Form von Polymorphie zu realisieren, via Interfaces.
Ich definiere hier mal ein Interface-Figur wie geometrische Figur. Das wird sehr bescheiden sein.
So, eine geometrische Figur kommt also zumindest mit diesem Interface mit einer einzigen Zugriffsoperation daher,
die nennt sich Draw. Und wir stellen uns vor, dass Draw die geometrische Figur auf irgendeinem Canvas-Zeit,
wie zum Beispiel auf dem Büschel oder wo auch immer.
Natürlich heißt diese Funktion nur so, also es gibt keine Garantie, dass sie tatsächlich das tut, was ich im Namen sage.
So, dann können wir dieses Interface in verschiedenen Klassen implementieren, zum Beispiel
können wir eine Klasse von Dreiecken aufmachen, von der wir sagen,
dass sie dieses Interface-Figur implementiert auf, wer irgendeine Art, also vermutlich nur die Klasse,
so was wie mindestens drei Filter haben, die die Eckpunkte des Dreiecks bezeichnen und Draw heißt dann,
dass Linien gezogen werden zwischen diesen Eckpunkten. Und ebenso können wir uns eine Klasse des Circles,
also Kreis vorstellen, die ebenfalls dieses Interface implementiert, natürlich auf andere Weise,
an Datenfelder haben. So, dann können wir über dieses Interface eine Funktion implementieren,
die einfach eine Liste von Figures zeichnet, das heißt, sie bekommt als Argument
ein ArrayPix von Figure, durch spezifizierte Länge und
die geht eben einfach alle Figures in diesem Array durch und tut nichts weiter,
als die eben alle nacheinander zu zeichnen. So, und hier sehen wir also die Polymorphenverwendung der Funktion,
wir sagen hier jedes Mal einfach nur Draw und je nachdem, was wir aber für ein Objekt tatsächlich vor uns haben,
wird Draw sehr unterschiedliche Effekte haben, also es wird eben einmal ein Kreis gezeichnet,
und dabei kann es sich dann andere Klassen geben, wie dieses Interface implementieren,
das ist auch immer daran, als wenn man hier irgendwie sagt, Draw methodisch steht, wird dann hier angekündigt.
So, einen ganz ähnlichen Mechanismus finden wir auch in Eskal, das sind die sogenannten Typklassen.
Zum Beispiel ist eine der Eskalatries implementierten Klassen die Quality-Klasse.
Die definierte Funktion auch, genauso wie ein Interface für bestimmte Typen,
also die Classic Quality-Aiders waren diejenigen Typen, die den Gleichheitscheck auf Elemente implementiert haben,
dieser Gleichheitscheck wird dann mit Doppelgleit geschrieben und gibt es dann noch eine negativer Form oder sowas.
Das ist die Klammer, das ist ja das selbe Profil.
Das implementiere ich in Eskal durch dieses Schlüsselwortes,
Presenters
Zugänglich über
Offener Zugang
Dauer
01:27:38 Min
Aufnahmedatum
2017-07-13
Hochgeladen am
2017-07-18 08:00:04
Sprache
de-DE