Ich habe versucht, eine veränderbare Funktion mit Schnittpunkt zu machen, aber ich denke, ich vermassle es mit der Implementierung von Schnittpunkt in die Funktion und bin mir nicht sicher über den besten Weg, um die Funktion zu reparieren.Revision Intersect Mutable Object
>(intersection '(2 4 7 10) '(2 9 0 10))
(2 10)
>(intersection '(1 4 10) '(83 1 48 2 4))
(1 4)
Testfälle für den Einsatz:
(define (intersect-mutable)
(let ((lst '()))
(let ((lst2 '()))
(define (insert x)
(set! lst (cons x lst)))
(define (intersect)
(define (helper lst lst2)
(define contains member)
(cond ((null? set) '())
((contains (car lst) lst2)
(cons (car lst) (intersect (cdr lst) lst)))
(else
(intersect (cdr lst) lst2))))
(helper lst lst2))
(lambda (function)
(cond ((eq? function 'intersect) intersect)
((eq? function 'insert) insert)
(else
'undefined))))))
Ein Testfall für die rekursive Funktion wäre
(define mut (intersect-mutable))
((mut 'insert) 'intersect)
((mut 'insert) 'mutable)
Um zu klären, ich versuche, zwei getrennte Listen in einer schneiden Liste. Ich habe eine Einfügefunktion hinzugefügt.
Bitte einige Beispieleingänge und -ausgänge angeben. Auch ist unklar, was "veränderbare Funktion" bedeutet. –
Veränderbare Datenstrukturen werden auch als destruktive Funktionen bezeichnet. Die Funktion ändert eine Variable in den aktuellen Zustand. Also, wenn v anfänglich 0 ist und ich dann 3 addiere, ist der Wert von v jetzt 3. Und dann füge ich 3 zu v hinzu, der Wert von v ist 6. Grundsätzlich wird der neue Wert von v so im Speicher gespeichert, dass es möglich ist später vom Benutzer zugegriffen werden. Hoffentlich macht das Sinn. Es fällt mir schwer, Konzepte zu erklären. – Vicky
Also Datenstrukturen sind Funktionen? –