Ich habe einige Schwierigkeiten herauszufinden, wie man Lambda verwendet, die in Listen in Scheme enthalten sind. Zum Beispiel habe ich den folgenden Code:Wie verwendet man Lambdas aus einer Liste in Schema
(define abc '((lambda (x) (* x x))))
Ich mag würde das erste Lambda aus der Liste nehmen und es auf einige Zahlen gelten. Hier ist, was ich bisher:
(map (car abc) '(1 2 3))
Allerdings bekomme ich folgende Fehlermeldung:
;The object (lambda (x) (* x x)) is not applicable.
Aber wenn ich versuche, die gleiche Sache direkt nur das Lambda verwenden, funktioniert es:
(map (lambda (x) (* x x)) '(1 2 3))
;Value 15: (1 4 9)
Kann mir jemand helfen zu verstehen, was ich falsch mache?
Das Problem, dass Sie behandeln '' ((Lambda ...)) ', als ob es das gleiche wäre wie' (Liste (Lambda ...)) ', aber sie sind radikal anders. [Diese Frage] (https://stackoverflow.com/questions/34984552/what-ist-the-difference-between-quote-and-list) und ihre Antwort machen einen guten Job bei der Erklärung warum. –
Wenn Sie nicht wissen, wie 'quote' funktioniert, werden Sie viel weniger Fehler machen, wenn Sie nur' list' überall verwenden und nie 'quote' für Listen verwenden, nur für Symbole. –