• Jueves 2 de Mayo de 2024, 07:29

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - amimusa

Páginas: [1]
1
Inteligencia Artificial / Funcion De Acceso: Lisp
« en: Viernes 3 de Septiembre de 2004, 14:46 »
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.

Páginas: [1]