Erlang-Lektion
Erlang Funktionen und Guards fuer Anfaenger
Funktionen in Erlang sind um mehrere Klauseln, Pattern Matching und optionale Guards gebaut. Das klingt zunaechst theoretisch, ist aber praktisch sehr stark: jede Klausel beschreibt genau, wann sie aktiv sein soll.
Warum Erlang-Funktionskoepfe anders wirken
In vielen Sprachen schreibst du einen Funktionskoerper und verzweigst dann innen weiter. In Erlang schreibst du oft mehrere Klauseln. Jede Klausel kann eine andere Form oder einen anderen Wertebereich abdecken. Dadurch bleibt die Struktur der Funktion direkt oben sichtbar.
Fuer Anfaenger ist das ein entscheidender Stilwechsel. Gute Erlang-Funktionen lesen sich fast wie eine Liste von Faellen. Oft reicht es schon, die Koepfe der Funktion in Reihenfolge zu lesen, um die Logik zu verstehen.
Was ein Guard hinzufuegt
Ein Guard verengt eine Klausel weiter. Pattern Matching sagt, welche Form die Eingabe hat. Ein Guard sagt, welche Zusatzbedingung noch gelten muss. Dadurch wird Code praeziser, ohne unnoetig laut zu werden. Guards sind besonders stark, wenn zwei Klauseln aehnlich aussehen, aber nur unter unterschiedlichen Wertbedingungen laufen sollen.
Das beste Anfaenger-Muster ist: zuerst Pattern, dann Guard, dann Koerper. Wer diesen Rhythmus frueh lernt, schreibt deutlich sauberere Funktionen.
classify(N) when N < 0 -> negative;
classify(0) -> zero;
classify(N) when N > 0 -> positive.So liest du mehrklauselige Funktionen
Lies solche Funktionen von oben nach unten. Frage dich bei jeder Klausel: welchen Fall faengt sie ab, und was faellt noch zur naechsten weiter? Die Reihenfolge ist wichtig. Eine zu breite Klausel am Anfang kann spaetere, spezifischere Faelle verschlucken.
Dadurch fuehlt sich Funktionsdesign in Erlang eher wie das Formulieren von Regeln an als wie das Schreiben eines Ablaufplans. Genau das passt zur Sprache.
Was Anfaenger oft falsch machen
Ein haeufiger Fehler ist, zu viel Logik in den Funktionskoerper zu verschieben statt in Kopf und Guard. Ein anderer ist, Guards fuer Dinge zu verwenden, die eigentlich eigene Klauseln sein sollten. Ausserdem wird oft vergessen, dass Guards bewusst nur einen sicheren Teil der Sprache erlauben.
Die beste Korrektur ist Vereinfachung. Wenn sich ein Fall in einem Satz erklaeren laesst, verdient er meist eine eigene Klausel. Wenn etwas nur beschreibt, wann die Klausel gelten soll, ist es oft ein Guard.
Was du danach ueben solltest
- Eine Funktion mit zwei Klauseln fuer leere und nicht leere Eingaben schreiben.
- Einen Guard fuer positive und negative Werte hinzufuegen.
- Die Reihenfolge der Klauseln laut erklaeren.
- Danach direkt Rekursion lernen.
Hauefige Fragen
Was ist ein Guard in Erlang?
Ein Guard ist eine Zusatzbedingung an einer Klausel, zum Beispiel when N > 0, die bestimmt, ob diese Klausel wirklich matchen darf.
Warum mehrere Funktionsklauseln verwenden?
Weil der Programmfluss dadurch direkt am Funktionskopf sichtbar und lesbar wird.