Also versuche ich mit etwas Code zu experimentieren und zwischen den beiden Schema-Ausdrucksmethoden von und Lambda zu wechseln.Schema: Konvertieren von Let zu Lambda
Der Code ich habe, ist wie folgt:
(let splice ((l '()) (m (car s)) (r (cdr s)))
(append
(map (lambda (x) (cons m x)) (perm (append l r)))
(if (null? r) '()
(splice (cons m l) (car r) (cdr r)))))
Ich versuche, die äußerste lassen Definitionen Lambda Format zu ändern, aber es ist ein bisschen verwirrend aufgrund der verschachtelten Natur des Codes . Was habe ich versucht, so weit zu tun ist:
(lambda (splice (l m r))
(append
(map (lambda (x) (cons m x)) (perm (append l r)))
(if (null? r) '()
(cut (cons m l) (car r) (cdr r)))))
(('()) (car upList) (cdr upList))
Dies ist eindeutig falsch, aber ich weiß nicht, wie weiter verfahren ist ...
sind Sie fast richtig: da lambdas keine Namen haben, Ihre Argumentliste ist falsch (es sollte '(Lambda (lmr) ...)') sein, und Sie müssen es einer Bindung zuweisen, wahrscheinlich mit 'letrec'. Dann möchten Sie ihn unter Verwendung dieses Namens aufrufen und ihm die Anfangsargumente übergeben. –
Danke, ich werde das ausprobieren! Was ist mit dem inneren Block wie '' splice (cons m l) (Auto r) (cdr r)) 'wo die Let-Definitionen rekursiv verwendet werden? Arbeiten diese mit dem gebundenen Lambda oder wird das weiter modifiziert werden müssen? – Starscreen60