Samstag, September 27, 2008

Zuweisung, Verzögerung, Rekursion - alles Lambda, oder was?!

Es mag Spaß machen, einigermaßen komplexe Programme in eine einzige, unleserliche Zeile zu stopfen. In der Programmiersprache Perl sind die "one-liners" ja beinahe Kult.

Von geradezu didaktischem Wert ist die Konstruktion von Einzeilern für Python von Dan Piponi. Bei ihm lernt man, was die Mächtigkeit von Lambda-Ausdrücken ausmacht. Zuweisung, Verzögerung, Rekursion -- das alles kann man leicht mit Lambdas ausdrücken. Mit ihrer Hilfe kann man sich beliebige Einzeiler basteln, siehe "On writing Python one-liners".

Nicht, dass ich Sie zu Einzeilern ermutigen möchte. Aber Lambda-Ausdrücke sollte jeder Programmierer kennen. Sie sind die Wunderwaffe der funktionalen Programmierer!

1 Kommentar:

Andreas Maier hat gesagt…

Da fällt mir spanten ein alter Blog-Post zum Thema Anonymous Recursion in C# von Wes Dyer ein:

Hier ein Auszug! Eine ware Odyssee an Lambda-Ausdrücken;-):

... g = h => m => m > 1 ? h(m - 1) + h(m - 2) : m;
....

Sehr aussagekräftig, oder?;-)
Wer mehr dazu wissen will:

http://blogs.msdn.com/wesdyer/archive/2007/02/02/anonymous-recursion-in-c.aspx

Viele Grüße
Andreas Maier