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

У меня есть функция 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))
)

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


person CS student    schedule 04.04.2016    source источник


Ответы (1)


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

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

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

person Óscar López    schedule 04.04.2016