Buenas compañer@s,
Vereis, tengo examen el proximo lunes, por lo que una explicacion a esta duda urge ;-).
Resulta que si hay definido una variable del tipo....
(defvar *reservas* '(
(r1 (tipo . refugio) (nombre . D205) (inicio 7 febrero 1996)
(fin 17 marzo 1996) (responsable "pepe"))
(r2 (tipo . albergue) (nombre . D403) (inicio 1 marzo 1996)
(fin 17 marzo 1996) (responsable "juan"))
(r3 (tipo . refugio) (nombre . D501) (inicio 7 febrero 1996)
(fin 17 marzo 1996) (responsable "luis"))
(r4 (tipo . refugio) (nombre . D100) (inicio 7 febrero 1996)
(fin 17 marzo 1996) (responsable "abdrés"))
(r5 (tipo . refugio) (nombre . D200) (inicio 7 febrero 1996)
(fin 17 marzo 1996) (responsable "julian"))))
Las funciones de acceso se definen de la siguiente manera:
Acceder al nombre:
(defun nombre-reserva (reserva)
(rest (assoc 'nombre (rest reserva)))
)
El hecho de poner (rest (assoc 'nombre ( ... ))) lo entinedo perfectamente, ya que lo que hace es tomar el cdr de lo que devuelve el assoc, es decir el valor de la clave. Lo que no acabo de entender es porque lo aplica sobre el (rest reserva) ya que si hago un (rest *reservas*) lo que me devuelve es la lista de reservas sin la primera reserva, y no la lista de caracteristicas de la reserva.
Gracias.