> 1 <
Автор | Сообщение |
Vaniok
2 сообщений |
#6722 2012-11-02 21:45 GMT+3 часа(ов) |
Помогите пожалуйста решить таку задачку. Определить функцию УДАЛИТЬ (Е, Х), которая удаляет все вхождения заданного элемента Е в списке Х. Вот функция которая удаляет атом со списка а надо сделать еще возможность удалять список и пару с списка Х.
(define del_el (lambda (lst el) (cond ((eq? lst '()) '()) ((eq? (car lst) el) (del_el (cdr lst) el)) (#t (cons (car lst) (del_el (cdr lst) el)))))) |
|
Aoloa
37 сообщений |
#6723 2012-11-02 22:50 GMT+3 часа(ов) |
Цитата Ваша функция правильная, достаточно заменить eq? на equal?. В случае с парами и списками eq? равно #t только тогда, когда пара хранится в одном и том же месте в памяти (т.е. (eq? '(1 . 2) (cons 1 2)) будет равно #f), а equal? сравнивает каждый элемент списка (т.е. (eq? '(1 . 2) (cons 1 2)) будет равно #t). |
|
With iTeX* your entire life can be encapsulated into a dynamic hyperdocument, downloadable by anybody you designate (Donald E. Knuth, An Earthshaking Announcement)
|
|
Vaniok
2 сообщений |
#6724 2012-11-02 23:05 GMT+3 часа(ов) |
Цитата Надо сделать с помощью базовых функций. также должно работать типу (del_el '(1 2 ( 3 (ф c) 2) ф . c) '(ф . с)) |
|
> 1 <