; Harjoitus 8 Tehtävä 5 ; joukkojen käsittelyä LISPillä ; Funktio tutkii onko parametrilista joukko ; ts lista jossa mikään alkio ei esiinny kahdesti (DEFUN joukko_p (lista) (COND ((EQ lista NIL) T) ((MEMBER (CAR lista) (CDR lista ) :test 'equal) NIL) ( T (joukko_p (CDR lista) ) ))) ; Funktio muodostaa kahden joukon unionin ; Algoritmi: Jos x tyhjä palautetaan y ; Jos x:n pää joukossa y palautetaan unioni x:n hännästä ja y:stä ; Jos x:n pää ei ole joukossa y lisätään x:n pää y:hyn ja palautetaan ; unioni x:n hännästä ja y:stä (DEFUN unioni (x y) ( IF (NOT (joukko_p x)) (ERROR "X EI JOUKKO")) ( IF (NOT (joukko_p y)) (ERROR "Y EI JOUKKO")) (COND ((EQ x NIL) y) ((MEMBER (CAR x) y) (unioni (CDR x) y)) ( T (unioni (CDR x) (CONS (CAR x) y))) ) )