asdfman
Commander
- Registriert
- März 2008
- Beiträge
- 2.315
Hallo,
Ich bin kein großer C++ler und habe eine Frage, deren Beantwortung
darüber entscheiden könnte, ob ich das ändern werde.
In C++ sind ja kürzlich Lambda-Ausdrücke eingeführt worden.
Erlauben diese die Erzeugung eines Funktionsobjektes zur Laufzeit,
oder kann man damit nur statische Objekte erzeugen? Auch würde
ich gern wissen, ob Funktionsobjekte First Class Citizens geworden
sind. Also, ob man sie als Parameter an eine Funktion übergeben
kann und diese ein weiteres Funktionsobjekt zurückgeben kann.
Als simples Beispiel, was ich meine (in Lisp):
Erklärung für Leute, die Lisp nicht kennen:
make-adder ist eine Funktion, die einen Parameter entgegen nimmt
und als Rückgabewert ein Funktionsobjekt liefert, das seinen Para-
meter zu dem Parameter von make-adder addiert:
Wenn C++ jetzt solche Konstruktionen erlaubt, wäre das ein sehr sehr
guter Grund für mich, diese Sprache endlich mal zu lernen.
Liebe Grüße, euer Schnuckiputz
Ich bin kein großer C++ler und habe eine Frage, deren Beantwortung
darüber entscheiden könnte, ob ich das ändern werde.
In C++ sind ja kürzlich Lambda-Ausdrücke eingeführt worden.
Erlauben diese die Erzeugung eines Funktionsobjektes zur Laufzeit,
oder kann man damit nur statische Objekte erzeugen? Auch würde
ich gern wissen, ob Funktionsobjekte First Class Citizens geworden
sind. Also, ob man sie als Parameter an eine Funktion übergeben
kann und diese ein weiteres Funktionsobjekt zurückgeben kann.
Als simples Beispiel, was ich meine (in Lisp):
Code:
(define (make-adder n)
(lambda (m) (+ m n)))
Erklärung für Leute, die Lisp nicht kennen:
make-adder ist eine Funktion, die einen Parameter entgegen nimmt
und als Rückgabewert ein Funktionsobjekt liefert, das seinen Para-
meter zu dem Parameter von make-adder addiert:
Code:
(define addfive (make-adder 5))
(addfive 3) ergibt 8
(addfive 9) ergibt 14 etc.
Wenn C++ jetzt solche Konstruktionen erlaubt, wäre das ein sehr sehr
guter Grund für mich, diese Sprache endlich mal zu lernen.
Liebe Grüße, euer Schnuckiputz