Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Lambda Kalkül

0 views
Skip to first unread message

Stefan Harrer

unread,
Oct 26, 2009, 2:25:18 AM10/26/09
to
Hallo zusammen,

wie viel mehr tiefere Einsicht bekommt man in eine Funktionale
Programmiersprache wie Lisp, OCaml oder Haskell (eine von diesen will
ich mir beibringen) wenn man vorher den Lambda Kalk�l verstanden hat?
Hat hier vielleicht jemand ein gutes Skript oder zumindest Text das den
Lambda Kalk�l mit etwas Tiefe behandelt? Vielleicht noch eine Frage an
die Compiler Schreiber: Kennt jemand eine Beschreibung wie aus FA Code
am Ende Maschinencode entsteht, oder ergibt sich dies implizit aus dem
Lambda Kalk�l? Steht dazu etwas im Drachenbuch?

Gru� Stefan

Volker Birk

unread,
Oct 26, 2009, 3:08:59 AM10/26/09
to
Stefan Harrer <sha...@yahoo.com> wrote:
> Hat hier vielleicht jemand ein gutes Skript oder zumindest Text das den
> Lambda Kalkül mit etwas Tiefe behandelt?

<http://de.wikipedia.org/wiki/Lambda-Kalk%C3%BCl>

HTH, HAND,
VB.
--
Bitte beachten Sie auch die Rückseite dieses Schreibens!

Stefan Reuther

unread,
Oct 26, 2009, 2:38:36 PM10/26/09
to
Stefan Harrer wrote:
> wie viel mehr tiefere Einsicht bekommt man in eine Funktionale
> Programmiersprache wie Lisp, OCaml oder Haskell (eine von diesen will
> ich mir beibringen) wenn man vorher den Lambda KalkīŋŊl verstanden hat?

Lambda-KalkīŋŊl ist die theoretische Grundlage, genauso wie die Turing-
Maschine die theoretische Grundlage von z.B. C ist. Und genauso, wie man
C lernen kann, ohne Turing-Maschinen zu kennen, kann man funktional
programmieren, ohne Lambda-KalkīŋŊl zu kennen. Man weiīŋŊ dann halt nur
nicht, warum der Backslash in '\a -> a+1' "lambda" gelesen wird.

> Hat hier vielleicht jemand ein gutes Skript oder zumindest Text das den

> Lambda KalkīŋŊl mit etwas Tiefe behandelt?

Ich hab das in dem Moment verstanden, wie ich ein (C++-)Programm
zusammengehackt hatte, welches Lambda-KalkīŋŊl implementiert[1] :-)
Da kann man dann mal ein bisschen spielen.

> Vielleicht noch eine Frage an
> die Compiler Schreiber: Kennt jemand eine Beschreibung wie aus FA Code
> am Ende Maschinencode entsteht, oder ergibt sich dies implizit aus dem

> Lambda KalkīŋŊl? Steht dazu etwas im Drachenbuch?

Was ist "FA Code"? Mit dem nackten Lambda-KalkīŋŊl wirst du eh nicht
rechnen. In Haskell ist z.B. die īŋŊbliche Aufgabe des Compilers "wie
reduziere ich einen Funktionsausdruck auf einen Konstruktorausdruck".
Da fande ich das Paper "Implementing lazy functional languages on stock
hardware: the Spineless Tagless G-machine" vom Herrn Peyton Jones
<http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.53.3729> sehr
lehrreich. <http://haskell.org/haskellwiki/Research_papers/Compilation>
hat auch noch eine Menge.

Das Drachenbuch dīŋŊrfte dazu kaum was enthalten, da geht's doch meines
Wissens mehr um imperative Programmierung?


Stefan

--
[1] <http://phost.de/~stefan/Files/lambda-2.8.zip>, Docs leicht veraltet
und aus der Sicht eines Drittsemesters geschrieben, der im Rechenzentrum
der TU Dresden sitzt :-)

Florian Weimer

unread,
Nov 1, 2009, 11:09:30 AM11/1/09
to
* Stefan Harrer:

> wie viel mehr tiefere Einsicht bekommt man in eine Funktionale
> Programmiersprache wie Lisp, OCaml oder Haskell (eine von diesen will
> ich mir beibringen) wenn man vorher den Lambda Kalk�l verstanden hat?

F�r die statisch getypten Sprachen hilft es wohl, einige getypte
Varianten des Lambda-Kalk�ls zu kennen, um die Beschr�nkungen des
jeweiligen Typsystems besser zu verstehen. Ich denke aber, da� der
Gewinn in der Praxis relativ gering ist (gerade wenn es um abstruse
Dinge wie z.B. das Verst�ndnis von Kombinator-Bibliotheken geht, auch
wenn es dort nur so wimmelt von Funktionen h�herer Ordnung).

F�r die dynamisch getypten Sprachen gilt das in noch geringerem Ma�e.
Lisp ist vielleicht auch keine funktionale Sprache im engeren Sinne,
weil Funktionen h�herer Ordnung eher selten sind und der Aufruf von
anonymen Funktionen �ber FUNCALL syntaktisch arg schwergewichtig ist.

0 new messages