Академический Документы
Профессиональный Документы
Культура Документы
1. Cada una de las siguientes cadenas de caracteres separadas por comas puede ser un símbolo, número,
lista, string, keyword, ..., o ninguno de ellos. Identificarlos y decir cuáles de ellos son formas LISP
evaluables:
2. Escribir expresiones formadas únicamente por FIRSTs y RESTs que devuelvan el símbolo BINARIO
a partir de las siguientes expresiones:
3. Definir la función TIPO de un argumento que obtenga el tipo del argumento al que se aplica. Así, por
ejemplo, (tipo '(1 2 3)) debe evaluarse a LISTA, o (tipo 3.0) a NUMERO, etc..
4. Definir la función MUEVE-A-LA-DERECHA, que toma como argumento una lista y devuelve otra
lista en la que el último elemento ha pasado a ser el primero y los demás han avanzado una posición,
como por ejemplo,
5. Redefinir la función ABS (valor absoluto) de tres maneras distintas, utilizando los condicionales IF,
WHEN y COND.
9. Usese MAPCAR para escribir una función que toma una lista y crea una nueva lista cuyos elementos
son listas cuyo primer elemento es el elemento inicial, y el segundo su tipo. Por ejemplo, si la lista
inicial es (X 2 "cadena" (Z W)), entonces se debe obtener ((X SIMBOLO) (2
NUMERO) ("cadena" STRING) ((Z SIMBOLO) (W SIMBOLO))). Utilícese el resultado
del problema 3
10. Definir una función, crea-primos, que obtenga a partir de un número entero una lista formada
por todos los números primos menores que dicho número. Por ejemplo:
12. Un número es perfecto si la suma de sus divisores mas pequeños es igual a él mismo (como por
ejemplo el número 6). Definir el predicado ES-PERFECTO-P que obtenga si un número inicial es o
no perfecto.
13. Escribir una función (y su inversa) que transforme tiempos expresados en segundos a una
combinación de años, meses, días, horas, minutos y segundos.
14. Definir el macro NEW-IF de modo que las dos siguientes sintaxis sean equivalentes:
15. Normalmente una función no modifica su argumento. Escribir un macro CAMBIA-LISTA que recibe
una lista como argumento y es capaz de modificar dicha lista, añadiendo como primer elemento la
longitud de la lista inicial, y devolviendo dicho valor:
16. 16. Definir el macro DEFINE-VARIABLE-FUNCION para que permita definir simultáneamente el
valor de un símbolo como variable y como función, evaluando expresiones como
17. Definir macros según la siguiente sintaxis (de este modo se pueden reproducir estructuras sintácticas
de otros lenguajes de programación):