Премахване на елемент от вложени списъци Lisp


remove_deep премахва елемент от списък, които може да има като елемент други списъци.
Или от L = {1, 2, {3}, {4, 5, {6}}, 7}, може да премахнем всяко число с „remove_deep L x“.

(define (remove_deep l x)
  (define (cons_helper a b)
    (if (= x a)
        b
        (cons a b)))
  (cond 
    ((null? l) l)
    ((list? (car l))
     (cons (remove_deep (car l) x)
             (remove_deep (cdr l) x)))
    (else (cons_helper (car l)
                       (remove_deep (cdr l) x)))))
(remove_deep (list 2 5 3 (list 2 6 (list 2 3))) 3)
  1. Няма коментари.
(will not be published)