Ich versuche, ein Lambda von Parametern, so dass (apply (make-lambda '(a b) '(+ a b)) '(1 2))
kehrt 3
Ist dies der richtige Weg, um ein Lambda aus zwei Listen im Schema zu erstellen?
Mein erster Versuch (define (make-lambda params func) (lambda params func))
kehrt (+ a b)
Dieser Code Werke zu schaffen, aber es mir nicht richtig anfühlen: (define (make-lambda params func) (eval (list 'lambda params func)))
Was ist die richtige Weise, dies zu tun?
Ist Dies wird in der Schemaumgebung verwendet, in der es ausgeführt wird, oder ist das ein Teil eines Schema-Interpreters, den Sie schreiben? Die zwei würden unterschiedliche Antworten erfordern. – Sylwester
Ich lehne Schema ab und möchte sicherstellen, dass meine Lösungen nicht hässlich sind. –
Sie geben mir den Eindruck, dass Sie Prozeduren in Runtime erstellen müssen. 'eval' ist das einzige Konstrukt, das das macht. In der Regel hat die Verwendung dieses und eval große Konsequenzen für die Optimierung. Wenn Sie uns also ein Beispiel geben, wie Sie dieses verwenden, können wir insgesamt eine bessere Lösung finden. Häufig sind Lambda und Verschlüsse mit Funktionen höherer Ordnung ausreichend. – Sylwester