Ich verwende die SICP-Vorlesungen und den Text, um etwas über Scheme selbst zu lernen. Ich schaue mir eine Übung an, die besagt: "Eine Anwendung eines Ausdrucks E ist ein Ausdruck der Form (E E1, ... En). Dies beinhaltet den Fall n = 0, der einem Ausdruck (E) entspricht. Eine Curry-Anwendung von E ist entweder eine Anwendung von E oder eine Anwendung einer Curry-Anwendung von E.Anfänger: Curry-Funktionen in Scheme
(Edit:. Ich das obige Zitat korrigiert ... Ich hatte ursprünglich die Definition falsch zitiert)
Die Aufgabe, eine Curried Anwendung des Verfahrens zu definieren, die für
(define foo1
(lambda (x)
(* x x)))
bis 3 bewertet
Ich verstehe die Idee hier wirklich nicht, und das Lesen des Wikipedia-Eintrags über Curriying hat nicht wirklich geholfen.
Kann jemand mit einer klareren Erklärung helfen, worum hier gefragt wird?
Eigentlich wäre sogar eine Antwort auf dieses Problem hilfreich, da nach diesem noch fünf weitere zu lösen sind. ... Ich verstehe einfach nicht die Grundidee.
Zusatz: Auch nach Brian Campbells langer Erklärung bin ich immer noch etwas verloren.
Wird (foo1 (sqrt 3)))
als eine Anwendung von foo und daher eine Curry-Anwendung von foo betrachtet?
scheint zu einfach, aber vielleicht ...
Typing (((foo1 2)) 2)
in DrScheme gibt den folgenden Fehler (die ich Art von erwarteten)
procedure application: expected procedure, given: 4 (no arguments)
Nach dem erneuten Lesen What is Currying? Ich verstehe, kann ich auch wieder -definieren foo1 sein:
(define (foo1 a)
(lambda (b)
(* a b)))
So dann kann ich geben
((foo1 3) 4)
Aber das hat mich wirklich nicht näher kommen Gibt es 3 als Ausgang zu produzieren, und es scheint, als ob dies nicht wirklich das Original foo1 currying, es ist nur neu zu definieren es.
Verdammt, 20 Jahre C-Programmierung hat mich nicht darauf vorbereitet. :-) :-):
Sie haben ein unausgewogenes doppelten Anführungszeichen. Wo endet Ihr Angebot? – Svante
Ich habe meine Antwort mit einigen Klarstellungen und Antworten auf Ihre Änderungen aktualisiert. Versuchen Sie, nicht an andere Definitionen von Currying zu denken, die Sie sehen; Bei dieser Übung geht es nicht um die Definition einer Curry-Funktion, sondern um die Anwendung einer Curry-Funktion. –
Bitte lassen Sie mich wissen, ob meine bearbeitete Antwort geholfen hat! Da Sie versuchen, dies zu lernen, versuche ich Ihnen genug Informationen zu geben, damit Sie das Problem lösen können, ohne es selbst zu lösen. Wenn Sie möchten, dass ich meine Erklärung weiter ausführe, bin ich sicherlich bereit dazu. –