Wir werden das Buch Haskell Programming from First Principles (das "Haskell Book" genannt) von Christopher Allen und Julie Moronuki durcharbeiten. Die einzigen Voraussetzungen für eine Teilnahme sind dieses Buch, ein Computer und Du. Eine aufgeschlossene Haltung ist auch zu empfehlen. Es ist nicht nötig, bereits Erfahrungen mit Haskell, funktionaler Programmierung oder Programmierung allgemein zu haben.
Um Dich auf Deinen ersten Besuch vorzubreiten, erledige bitte folgende Punkte:
-
Tritt tritt der FPChat Slack Gemeinschaft bei. Alle Ankündigungen, die diese Lerngruppe betreffen, werden per Slack oder Meetup verschickt. Such im FPChat Slack nach dem
#haskell-study-group
Kanal. -
Kaufe deine eigene Ausgabe des "Haskell Book" (Codes für einen Rabatt sind verfügbar: siehe unten). Du wirst Deine eigene Ausgabe auf deinem Rechner brauchen, damit das PDF und ein Terminal nebeneinander öffnen kannst. Dieses Buch wurde von zwei Haskell Entwicklern in ihrer Freizeit recherchiert, geschrieben und herausgegeben, um das Wissen um funktionale Programmierung weiter zu verbreiten. Wir wissen, dass Du Dich, als ein Mitglied einer starken und hilfreichen Gemeinschaft, dem Geist reinen Handelns zu sehr verpflichtet fühlst, als das Du eine Ausgabe des Buches von jemand anders leihen würdest. Sie haben das Buch sogar mit LaTeX gesetzt: honoriere das!
-
Installiere Stack, das Entwicklungswerkzeug für Haskellprojekte. Wenn Du mit andere Packetmanagern, wie npm, pip oder apt vertraut bist, wirst Du merken, dass Stack ganz ähnlich ist. Du musst kein Experte in Stack sein, um zu den Treffen zu erscheinen, aber versuche wenigstens die Grundlagen zu lernen. Wenn Du schon alles über Stack wissen willst, dann könntest dieses Video anschauen. Das Allerwichtigste ist, egal was Du tust, installiere nicht die "Haskell Platform".
-
Richte ein Projekt ein, um die Übungen erledigen zu können und mach Dich mit GHC und GHCi vertraut. Mehr als ein Verzeichnis für deine Quellen anzulegen und sicher zu gehen, dass Du weißt wie man mit GHC eine Quelle übersetzt oder wie man GHCi startet, um eine REPL zu verwenden, ist nicht notwendig. Ich verwende gerne verschiedene Unterverzeichnisse für die einzelnen Kapitel, aber mach einfach, was Du am bequemsten findest. Wir unternehmen alles, damit es bei unserern Treffen WLAN gibt, aber erwarte nicht, dass es funktioniert.
Von Teilnehmern der Lerngruppe wird erwartet, Verantwortung für ihren eignen Lernfortschritt zu übernehmen. Das bedeutet, dass jeder die Regeln einer unterstützenden und gründlichen Lernatmosphäre einhält. Jede Woche solltest Du die folgenden Aufgaben erledigt haben:
- Den entsprechenden Teil des Buches lesen.
- All den Code eintippen.
- Alle Aufgaben versuchen.
- Dich mit einem Lernpartner treffen, um Deine Arbeit zu diskutieren.
- Das Gruppentreffen besuchen.
Diese Erwartungen sind nicht dazu da, Dir Dein Leben mies zu machen, sondern um Dir einen Rahmen für Deinen Erfolg zu geben. Wenn Du wirklich Haskell lernen willst: Konsequenz ist der Schlüssel dazu -- wie bei allem. Da wir Haskell in dieser Gruppe zusammen lernen werden, ist es wichtig, dass Du zuerst jedes Kapitel für Dich selbst durcharbeitest, sodass Du vorbreitet und in dem Wissen, wo Du Hilfe brauchst und was Du gut genug verstanden hast, um es anderen beizubringen, zum Gruppentreffen kommst. Wenn Du bei einer Übungsaufgabe stecken bleibst, geh zur Nächsten über und überspringe nicht einfach alle Aufgaben.
Wenn Du ein kompletter Anfänger bist, was Programmieren angeht, oder Du aus welchem Grund auch immer Probleme bei der Installation von Haskell auf Deinem Computer hast, sorge Dich nicht! Komm zur Lerngruppe und wir helfen Dir, zu verstehen, warum es nicht geklappt hat. (Und natürlich helfen wir Dir Haskell auch zu installieren.) Zum Glück brauchst Du für das erste Kapitel nicht mal einen Computer, nur Papier, einen Stift und Geduld. Also mach wenigsten das, auch wenn Du Hilfe bei der Technik brauchst.
Codes für Rabatte für das Buch sind erhältlich, wenn Du wirklich einen brauchst. Die Autoren wollen nicht, dass der Preis des Buches jemanden davon abhält es zu kaufen, also bitte kontaktiere mich, wenn Du die Kosten nicht stemmen kannst und einen Rabattcode haben willst. Bitte frage nicht nach einem Rabattcode, wenn Du nicht wirklich einen brauchst. Die Anzahl der Rabattcodes ist begrenzt und ich würde sie gerne denen vorbehalten, die sie wirklich brauchen.
Mit Deiner Teilnahme an dieser Lerngruppe verpflichtest Du Dich implizit, folgende Verhaltensregeln zu befolgen:
Du wirst Deine eigene Ausgabe des "Haskell Book" kaufen. Jeder der eine illegale Kopie verwendet, darf an der Lerngruppe nicht mehr teilnehmen.
Jede Woche, vor jedem Gruppentreffen, wirst Du den entsprechenden Teil des Buches lesen und versuchen alle Übungsaufgaben nach bestem Wissen und Gewissen zu lösen. Wenn Du Dich nicht ehrlich bemüht hast, Deine Arbeit zu erledigen, aus welchem Grund auch immer, ist es Dir nicht erlaubt am Gruppentreffen für diese Woche teilzunehmen. Jeder der zweimal oder dreimal in Folge seinen Kram nicht erledigt hat oder der sich nicht glaubhaft bemüht mit dem Lernplan der Gruppe mitzuhalten, wird gebeten werden, die Lerngruppe zu verlassen. Wenn Du Probleme mit den Übungsaufgaben hast, solltest Du bei den Treffen oder von Deinem Lernpartnern oder online Hilfe erbitten.
Du wirst alles Versuchen, um die wöchentlichen Lerngruppentreffen zu besuchen. Die Anzahl der Plätze ist begrenzt, also wenn Du nicht regelmäßig kommen kannst, dann nimm nicht teil. Teilnehmer, die regelmäßig Gruppentreffen verpassen, oder die Einladung zum Meetup bestätigen aber nicht erscheinen, werden ausgeschlossen. Wenn Du es nicht schaffst, ein Gruppentreffen zu besuchen, solltest Du so schnell wie möglich die Bestätigung der Einladung widerrufen.
Zusätzlich zu all dem, wird von Teilnehmern erwartet, dass sie ihr bestes geben, anständig und respektvoll miteinander umzugehen. Wessen Verhalten sich zu oft zu weit von den akzeptablen Grenzen des respektvollen, freundlichen und kollegialen Umgangs miteinander entfernt, wird ausgeschlossen.
Das Recurse Center hat eine Sammlung brauchbarer sozialer Regeln, die auch bei unseren Treffen gelten.
Wir werden in 12 Wochen die ersten 18 Kapitel des "Haskell Book" durcharbeiten und uns jede Woche für ein bis zwei Stunden treffen. Wir könnten den Plan verlängern, um weitere Kapitel durchzuarbeiten, wenn das gewünscht ist und der Organisator verfügbar ist.
Das ist kein Kurs, also erwarte keine Vorlesung. Vielmehr wirst Du Gelegenheit haben, deine Arbeit zu überprüfen und über Konzepte und Übungsaufgaben zu diskutieren, mit denen Du Schwierigkeiten hattest, als Du Dich allein durch das Buch gearbeitet hast.
Wir ermutigen Dich, Dich so gut es geht an den Wochenplan zu halten, um Dir Deinen Schwung zu bewahren. Abgesehen davon, wenns mal schief läuft, ist es eben so: tue Dein bestes um aufzuholen und vermeide Stoff zu überspringen, da jedes Kapitel auf dem nächsten aufbaut. Jederzeit können wir Aufgaben im Slack diskutieren, aber bitte poste Deine Lösungen nicht online, auch nicht auf GitHub.
Alle Treffen werden per Meetup und Slack angekündigt. Du musst zu jedem Treffen einzeln zusagen, da die Plätze begrenzt sind. Wenn Du ein Treffen nicht besuchen kannst, da es voll ist, arbeite auf eigene Faust weiter und komm zum nächsten Treffen. Sage nicht zu, wenn Du nicht kommen kannst. Wer zusagt und nicht erscheint, kann ausgeschlossen werden!
Im Materialien Unterverzeichnis diese Repositorys findest Du Folien, Zusatzaufgaben und andere Materialien, die wir während der Treffen verwenden können. Wenn Du etwas hinzufügen willst, mach einen pull request.
Woche 1. Einführung. Lambdakalkül.
- Haskell Book, Kapitel 1
Woche 2. Einstieg in Haskell.
- Kapitel 2 und 3
Woche 3, Grundlegende Datentypen.
- Kapitel 2 und 3 nochmal durchsehen
- Kapitel 4 und 5
Woche 4. Typen und Typklassen.
- Kapitel 4 und 5 nochmal durchsehen
- Kapitel 6
Woche 5. Funktionale Muster. Arbeiten mit Rekursion.
- Kapitel 6 nochmal durchsehen
- Kapitel 7 und 8
Woche 6. Listen und Faltungen von Listen.
- Kapitel 7 und 8 nochmal durchsehen
- Kapitel 9 und 10
Woche 7. Algebraische Datentypen.
- Kapitel 9 und 10 nochmal durchsehen
- Kapitel 11 und 12
Woche 8. Rückblick zur Halbzeit. Testen mit QuickCheck.
- Kapitel 2 bis 12 nochmal durchsehen
- Kapitel 13 (ohne Besprechung in der Gruppe)
- Kapitel 14
Woche 9. Monoide und Halbgruppen.
- Kapitel 15
Woche 10. Funktoren.
- Kapitel 15 nochmal durchsehen
- Kapitel 16
Woche 11. Applicative.
- Kapitel 16 nochmal durchsehen
- Kapitel 17
Woche 12. Monaden. Wie man Strukturen auf Code anwendet. Abschluss.
- Kapitel 17 nochmal durchsehen
- Kapitel 18
- Kapitel 19 (ohne Besprechung in der Gruppe)
- Allgemeiner Rückblick und Ausblick
Die Termine und Veranstaltungsorte der Treffen können sich von Woche zu Woche ändern, je nachdem wo und wann wir einen Veranstaltungsort finden können. Wenn Du dabei helfen kannst einen Veranstaltungsort zu finden, komm bitte auf mich zu.
Für Details zu einem speziellen Treffen, schau auf der Meetup Seite nach.