Lambdaheads: Unterschied zwischen den Versionen
Daxim (Diskussion | Beiträge) |
Daxim (Diskussion | Beiträge) |
||
Zeile 8: | Zeile 8: | ||
Nächster Termin = alter Termin + 28 Tage | Nächster Termin = alter Termin + 28 Tage | ||
Termin: Mo, ''' | Termin: Mo, '''2012-01-09''' ab 19:30 Uhr in der Bibliothek [[Lage|im Metalab]] | ||
Programm: | Programm: | ||
* | Wir machen mal eine praktische Übung und übersetzen einen halbwegs komplexen Schnippsel Code, der einen Listenausdruck in einen anderen nach gewissen Regeln umformt, in möglichst viele funktionale Sprachen, und vergleichen und diskutieren die Lösungen. Damit wir uns auf den wesentlichen Teil konzentrieren können, eignet euch vorher das Wissen an, wie man in der Sprache der Wahl die folgenden Dinge auf funktionale Weise macht, bzw. welche Bibliothek man dafür einsetzt: | ||
* Variation ohne Zurücklegen k<sub>(n)</sub> aus der abzählenden Kombinatorik, d.h. aus n = (1, 2, 3) und k = 2 mach ((1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2)) | |||
* Aufsammeln von Elementen nach einem gewissen Kriterium, z.B. define my_list = gather(elem) { take elem if not elem modulo 3 } original_list, d.h. aus (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) mach (3, 6, 9), weil das die sind, die ohne Rest durch 3 teilbar sind. In Sprachen, die das Konstrukt gather/take nicht haben, kann man das imperativ mit dem verpflichtenden Einsatz einer Ausgabevariable nachbilden: define my_list; map(elem) { add my_list, elem if not elem modulo 3 } original_list; | |||
* Ausfiltern von mehrfach vorkommenden Elementen aus einer Liste, so dass nur noch eins von jeder Sorte bleibt, d.h. aus (foo foo bar foo baz bar quux) mach (foo bar baz quux). Meist heißt das Schüsselwort uniq. | |||
Bitte vorbereiten und den eigenen Laptop mitbringen. | |||
Teilnehmer: | Teilnehmer: | ||
* [[Benutzer:daxim]] | |||
* [[User:Citizen428|citizen428]] | * [[User:Citizen428|citizen428]] | ||
=== Vortragswünsche === | === Vortragswünsche === |