Es ist schön zu sehen, dass fast alle gemeldeten Teilnehmer gekommen sind. Das finde ich ganz toll und für unseren ersten Vortrag in Wolfsburg sind 16 Teilnehmer gar nicht schlecht! :-) Auch unsere neue Location ist toll, vielen Dank an T-Systems onsite services GmbH!

Doch nun zum Vortrag von Jens Schauder. Es geht heute nicht um Scala für Anfänger sondern um das Typsystem.

Jens und der Java-Scala-Dino

Erster Punkt sind implicit conversions. Nimmt man eine Methode, die es für einen Typ nicht gibt, sucht der Compiler einen Typ, der diese Methode besitzt und wandelt den Typ um! Eine denkbare Anwendung sind DSLs.

Wir kommen zu den Structural Types. Hier kommt das 'Duck Typing' ins Spiel. Umsetzung erfolgt mit Reflection, was relevant für Performance sein kann aber elegante Konstrukte ermöglicht.

Path Dependent Types. Ein Typ hängt an einer Objektinstanz( eine Kuh ist kein Teddy! :-) ) Diese Funktion dient beispielsweise für die Registrierung- Unregistrierung von Objekten.

Weiter mit Phantom Types. Typen ohne Instanzen! Liquid Darstellung mit Scala-spezifischer Template-Syntax. Das mag für Konfigurationen und Validierungen nutzbar sein, erschließt sich aber nicht auf den ersten Blick. Okay, dafür kenne ich Scala zu wenig (warum hat der Tag nur 24 Stunden,seufz)

Type Lambdas, jetzt wird es endgültig verrückt. Das Codestück sieht aus wie obfuscated, eine Menge Buchstaben und Zeichen! :-) Functoren und Tuple und ich frage mich gerade, macht so etwas noch Sinn? Das habe ich mit Perl und auch Groovy gesehen. Nur weil es machbar ist, muss es meines Erachtens nicht der richtige Weg sein. Jens kann ich bescheinigen, er hat es verstanden! Letztendlich läuft es darauf hinaus, dass mit allen vorherigen Konstrukten, in Kombination, leistungsfähige Algorithmen entwickelt werden können.

trait Functor [F[_]]...
implicit def Tuple2Functor[R]:
Functor[({type λ[α]=(R,α)})#λ] = new Functor[({type λ[α]=(R,α)})#λ] {
def fmap[A,B](r:(R,A),f: A=>B) = (r._1,f(r._2))
}

Zum Abschluss geht es um Bool. Umdefinition (gibt es das Wort?) boolescher Ausdrücke und Logiken. Boolesche Logik im Typsystem, logisch oder?

Hier noch die Links: