2016-04-04 1 views
0

У меня есть функция remove_duplicates, которая удаляет дубликаты в списке и возвращает новый список.Использование схемы для назначения значения, возвращаемого функцией переменной в другой функции

(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)))) 

)) 

Я хочу присвоить возвращаемое значение из этого вызова функции переменной в другой функции f.

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

Любая помощь приветствуется, спасибо!

ответ

2

Это правильный синтаксис для использования let:

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

Также обратите внимание, что это плохая идея назвать list параметра и/или переменными, что столкновения с встроенной процедурой с тем же именем ,