[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [KAHLE@Aquinas.Think.COM: defstruct request for common lisp]

    Date: 1 Oct 87 17:25 PDT
    From: Pablo Ghenis <ghenis.pasa@xerox.com>

    What useful things could one do with the output of (structure-slots
    <structure-name>), given that the choice of slot to access cannot be
    gracefully deferred until run-time the way p-lists allow? I'm afraid
    that a "structure-slots" function wouldn't be all that valuable because
    of this deeper limitation of structures.

What limitation are you talking about?  Structure slot names are also
the names of functions, which can be FUNCALLed.  Thus, one could write

(defun show-structure-slots (structure)
  (dolist (slot (structure-slots (type-of structure)))
    (format t "~A: ~S" slot (funcall slot structure))))

You may have been thinking of Maclisp and Zetalisp defstruct, which
defined the accessors as macros, so they couldn't be FUNCALLed.  Common
Lisp fixed this.