MC600 - Segundo semestre de 2003 - LISTA 3 ------------------------------------------ 1. Dada a seguinte definição: (setf mylist '((fhc frango)(collor tereza) (voce nao eh a mamae) (e por favor)(spielberg (toni ramos)) (polvo lula mariscos))) Construa as listas abaixo usando qualquer função que você tenha aprendido até agora. a. (frango nao por favor) b. ((tereza collor) nao eh a mamae) c. (collor fhc lula) d. (spielberg nao eh a favor) 2. Escreva uma função "unnest", que recebe uma única lista como parâmetro e retorna uma lista simples contendo todos os seus átomos: Ex. (unnest '(1 (2 (3))(4 5)) ) ==> (1 2 3 4 5) (unnest '(((((teste))))) ) ==> (teste) 3. Considere a seguinte definição: (defun life (a b) (cond ((null a) b) ((null b) a) (t 'its-tough))) Suponha que você está executando um interpretador LISP e que você digite o seguinte: >(setf a 'oh-boy) Depois você faz o seguinte: >(life 'gummi a) Quais são os valores globais e locais de "a" e "b" antes, durante e depois da execução deste comando? 4. Escreva uma função REVERSO, que inverte os elementos de uma lista. Ex. (reverso '(A (B C) D (E F)) ) ==> ((E F) D (B C) A) 5. Escreva uma função REVERSO-TOTAL, que inverte os elementos de uma lista e inverta também, recursivamente, os elementos das listas contidas dentro da primeira. Ex. (reverso-total '(A (B C) D (E F)) ) ==> ((F E) D (C B) A)