Kunst mit Funktion

Slitherlink-Puzzles lösen in Haskell

Wissen | Know-how

Funktionale Programmierung ist in akademischen Kreisen beliebt, in freier Wildbahn aber eher selten. Das Beispiel eines Löseprogramms für das Papier-und-Bleistift-Puzzle Slitherlink zeigt, wie elegant sich so etwas in der funktionalen Sprache Haskell ausdrücken lässt. Und die Parallelisierung auf mehrere CPU-Kerne gibts fast gratis dazu.

Wenn man gewohnt ist, in Sprachen wie C++, JavaScript oder Perl zu programmieren, ist die Begegnung mit einer funktionalen Programmiersprache wie Haskell ein Kulturschock: Es gibt keine Variablen. Jedenfalls nicht in dem Sinne, wie man das gewohnt ist, als Speicherplatz, der im Laufe der Zeit verschiedene Werte annehmen kann. Wenn irgendwo steht i = 1, dann kann nicht ein paar Zeilen später i = 2 sein. Ja aber Moment, wie macht man denn dann eine Schleife? Gar nicht. Das damit Bezweckte drückt man mit anderen Mitteln aus, mit Listen und mit Rekursion.

Haskell-Programme bestehen aus Funktionen, und zwar im mathematischen Sinne: Zu jedem Eingabewert gibt es genau einen Ausgabewert. Ruft man eine Funktion mehrmals mit denselben Parametern auf, liefert sie garantiert immer dasselbe Ergebnis. Es gibt keine globalen Variablen und auch keinen inneren Zustand, der das Ergebnis einer Funktion beeinflussen könnte. ...

Sie möchten wissen, wie es weitergeht?

Als c't-Plus-Abonnent gratis lesen

Anmelden als c't-Plus-Abonnent

weiterführende Links

Kommentare