Achtes Treffen des Curry Clubs
Über Scala, Effekte und Gopher
Wie schon beim dritten Treffen war wieder Scala mit von der Partie.
Vorträge
Lars verglich Scala mit Haskell und ML und zeigte, dass Scala nicht ein “schlechteres Haskell” oder ein “besseres ML” sei, sondern eine eigene Sprache mit eigenen Konzepten. Hauptpunkt war hier, dass in Scala viele Konzepte “first class” sind, wie z.B. Typklassen und Instanzen aus Haskell oder Module und Funktoren aus ML. Trotzdem erhält man dann einige Komplexität, mit der es dann – als Programmierer – diszipliniert umzugehen gilt. Der Vergleich von Programmiersprachen führt oft zu hintersinnigem Humor, aber auch Verzweiflung. Im Vortrag besonders erwähnt wurden: Scala vs. Haskell und Haskell vs. SML – wobei bei “SML” viele Leute nur an das tatsächlich seit über 15 Jahren untote SML/NJ denken, nicht aber an das wesentlich frischere Poly/ML oder gar die Isabelle/ML-Umgebung. Teile des Vortrags können von einer vorherigen Iteration nachgelesen bzw. nachgehört werden.
Ingo gab eine kleine Einführung in Effektsysteme über freie Funktoren und freie Monaden. In diesem Vortrag der Reihe “What the Kmett is a Monad” zeigte Ingo, wie man aus beliebigen Typkonstruktoren einen (freien) Funktor und aus beliebigen Funktoren eine (freie) Monade machen kann. Als Anwendungszweck stellte er vor, wie man Effekte als einfachen Datentyp modelliert und aus diesem dann “für lau” eine passende Monade erhält, welche Programm mit diesen Effekten modellieren kann. Anschließend kann man dann dieses Programm interpretieren und so zum Beispiel nach IO, aber auch nach andere Monaden, überführen. Schließlich zeigte er noch das aktuelle Werk von Oleg Kiselyov, womit man zum Einen bessere Performance bekommt, zum Anderen aber auch auf einfache Art und Weise verschiedene Effekte kombinieren und modular interpretieren kann.
Sternenseemann erzählte uns zunächst vom Gopher-Protokoll, was drei Jahre vor HTTP/1.0 standardisiert worden ist. Tatsächlich gibt es anscheinend auch noch aktive Gopher-Server, die allerdings verschiedene Erweiterungen des Protokolls benutzen. Das Protokoll selbst ist relativ einfach strukturiert. Als krönenden Abschluss zeigte er uns seine Serverimplementation in Haskell names “Spacecookie”. Eine entsprechende Spacecookie-Monade durfte natürlich nicht fehlen.
Diskussionen & Sonstiges
Tim hat Curry-Club-Sticker mitgebracht. Auf einen vorherigen Twitter-Beitrag hin hat sich ein Programmierer aus Barcelona gemeldet, der auch gerne welche hätte. Freundlicherweise hat Tim ihm ein paar Exemplare geschickt. Der Curry Club Augsburg ist demzufolge international bekannt!
Lars wies während Ingos Vortrag, bei dem Kan-Erweiterungen vorkamen, auf den obligatorischen “Yes We Kan”-Witz hin, der auch während der Haskell eXchange fiel.
Ingo setzte eine Belohnung aus: auf einen Beweis der Tatsache, dass die Listenmonade keine freie Monade ist.