1

I create a plist with keys that I turn into a symbol from some data with make-symbol:

(defparameter *plist* (list (make-symbol "key") "val"))

It creates the symbol #:|key|: it starts with a sharp sign.

(#:|key| "val")

Using getf mysteriously returns nil:

(getf *plist* :|key|)
NIL

and it is not possible to use #:|key|. This denotes, AFAIK, a variable, which is undefined. I tried a combination of (intern (string (make-symbol… with no success.

Note that the access library works on that structure:

(access:access *plist* :|key|)
"val"
T

What is going on? Is make-symbol appropriate? How can I make getf work?

Thanks


What I am doing is populating an existing plist with user data. New keys can be created on the fly. A plist has been convenient so far. Maybe is there a better suited data structure for this, like a hash-table.

Ehvince
  • 17,274
  • 7
  • 58
  • 79

0 Answers0