exclusion function in LISP

1

I'm not sure how to do another function to delete the name and phone.

Here is the code I did:

(defun incluir (Agenda  NomeTelefone)
    (cond ((atom A) (cons NT 'nil))
          ((equal (car NT) (caar A))
              (cond ((existeFone (cadr NT) (cdar A))A)
                    ('t (cons(cons(car NT)(cons (cadr NT)(cdar A))) (cdr A)))))
          ('t (cons(car A)(incluir (cdr A) NT)))))

//função existeFone 
(defun existeFone (NT A)
    (cond ((equal NT A) A)
          ('t (cons (cons(car NT)(cons (cadr NT)(cdar A))) (cdr A))))
    
asked by anonymous 23.06.2015 / 16:05

1 answer

0

To "delete" a phone from the list, we can assemble a new list recursively with all values other than what we want.

(defun excluir (valor lista)
  (cond
     ((eql nil lista) nil) ;lista vazia/fim da lista, retornamos nada
     ((and ;verificamos se os dois campos são iguais
          (equalp (car valor) (caar lista)) ;comparamos primeiro campo
          (equalp (cadr valor) (cadar lista))) ;comparamos o segundo
           (excluir valor (cdr lista))) ;pulamos ele e pegamos o resto,
      (t (cons (car lista) (excluir valor (cdr lista)))))) ;não é o valor, adicionamos ele ao resto da lista montada recursivamente
    
30.08.2015 / 05:53