SYNTAX:
mixed funcall( closure, paramlist )
apply()
bound_closure()
unbound_closure()
----------------------------------------------------------------------
SYNTAX:
mixed funcall( closure, paramlist )
FUNKTION:
Werte den Lambdaterm aus. Binde die freien Variablen des Lambdaterms
an die aktuellen Parameter.
BEISPIEL:
x = funcall( inc, 4 )
----------------------------------------------------------------------
SYNTAX:
closure lambda( arglist, funktion )
PARAMETER:
Dabei ist <funktion> eine Funktion in Lisp/Scheme-Syntax, wobei
freie Variablen, in dem Array <arglist> deklariert werden.
Wichtig: Variablen und Operatoren muessen gequotet werden, damit
der Compiler sie nicht auswertet.
FUNKTION:
Kreieren eines neuen Lambdaausdrucks. Wird der Ausdruck ausgewertet,
bekommt der Ausdruck als this_object() das Objekt, in dem er
erschaffen wurde, d.h. in dem dieser Funktionsaufruf steht.
BEISPIEL:
closure inc;
inc = lambda( ({ 'x }), ({ #'+, 'x, 1 }) );
----------------------------------------------------------------------
OFFENE FRAGEN:
* Wie bestimmt man euid und aehnliches von Lambda-Termen ?
* Wie baut man rekursive Lambdaterme ?
* Werden die Ausdruecke lazy ausgewertet ?
* Was passiert bei Fehlern in Lambda-Termen ?
* Was passiert mit Ausdruecken der Art (lambda x.xx)(lambda x.xx) ?
|