2016-04-04 9 views
0

Ich habe eine Funktion remove_duplicates, die die Duplikate in einer Liste entfernt und die neue Liste zurückgibt.Mit Scheme den von einer Funktion zurückgegebenen Wert einer Variablen in einer anderen Funktion zuweisen

(define (remove_duplicate list) 
(cond 
    ((null? list) '()) 

    ;member? returns #t if the element is in the list and #f otherwise 
    ((member? (car list) (cdr list)) (remove_duplicate(cdr list))) 

    (else (cons (car list) (remove_duplicate (cdr list)))) 

)) 

Ich möchte den Rückgabewert dieses Funktionsaufrufs einer Variablen in einer anderen Funktion f zuweisen.

(define (f list) 
    ;I have tried this syntax and various other things without getting the results I would like 
    (let* (list) (remove_duplicates list)) 
) 

Jede Hilfe wird geschätzt, danke!

Antwort

2

Dies ist die korrekte Syntax für die Verwendung let:

(define (f lst) 
    (let ((list-without-dups (remove_duplicates lst))) 
    ; here you can use the variable called list-without-dups 
    )) 

auch feststellen, dass es eine schlechte Idee ist list einen Parameter und/oder eine Variable zu nennen, dass Auseinandersetzungen mit einem eingebauten in Verfahren mit dem gleichen Namen .