Kommunikation mit der Aussenwelt
Will eine rein funktionale Sprache mit der Aussenwelt kommunizieren, so muß sie sich für Seiteneffekte öffnen. Rein funktionale Programmiersprache unterscheiden sich gerade darin von den imperativen Programmiersprachen, dass sie die Seiteneffekte in einer kontrollierten Art in die rein funktionale Sprache einbetten. Haskell kapselt imperative Subsysteme in so genannten Monaden. Diese Monaden gibt es unter anderem für Input/Ouput, Zustände, Fehlerbehandlung und Logging. Monaden zeichnen sich durch zwei Punkte aus: In ihnen gilt einerseits das sequentielle Ausführen von Anweisungen und andererseits sind Operationen in der Monade in sich abgeschlossen.
Rekursion anstelle von Schleifen und Zuweisungen
Ist die Schleife die Struktur zur Manipulation von Datensätzen für die imperative Programmierung, so ist es die Rekursion für den funktionale. In Python als imperativer Programmiersprache kann die Funktion Fakultät sowohl mittels Schleifen als auch durch Rekursion implementiert werden (Listing 3).
| Listing 3: Fakultät-Funktion in Python |
|---|
def fakLoop
sum=1
for i in range(1,n+1):
sum = sum*i
return sum
def fakRek(n):
if (n==1): return 1
else: return n*fakRek(n-1)
|
Funktionale Programmiersprachen sind für die Rekursion optimiert. Falls die letzte Berechnung einer Funktion deren rekursiver Aufruf ist, so nennt man diese Funktion endrekursiv (Listing 4).
Eine Endrekursion kann in funktionalen Programmiersprachen durch den Compiler in iterative Funktionen transformieren, sodass deren Speicherplatzverbrauch unabhängig von der Rekursionstiefe ist. Die Funktion "factorial" in Haskell benötigt die Hilfsfunktion "factorial' ", um endrekursiv zu sein. Der Wert der Fakultät-Funktion wird in der zweiten Variable akkumuliert.
| Listing 4: Endrekursive Fakultät-Funktion |
|---|
factorial :: (Num t) => t -> t factorial n = factorial' n 1 factorial' :: (Num t) => t -> t -> t factorial' 0 a = a factorial' n a = factorial' (n-1) (n*a) |
Diesen Artikel als PDF kaufen
Als digitales Abo
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





