使用常见的lisp中的另一个已定义变量定义plist的键

时间:2013-06-03 16:54:57

标签: lisp key plist common-lisp

在常见的lisp中,我将变量'name'定义为:

(setq name ':length-1)
 >> :length-1

现在我想使用这个变量制作一个plist,我希望它看起来像:

(:length-1 10)

有没有办法使用另一个定义的变量来定义plist的键?

我试过'格式',但这给了我一个字符串而不是符号:

(list (format nil ":~a" name) 10)

但是这给了我:

(":lifting-surface" 10)

2 个答案:

答案 0 :(得分:3)

这应该这样做:

(list name 10)

但是,如果您在使用":lifting-surface"时获得":length-1"而不是format,则必须更改name的值。

答案 1 :(得分:1)

看起来您正在尝试从字符串中创建关键字符号,我建议使用alexandria库中的make-keyword函数,如下所示:

(defun make-keyword (name)
  "Interns the string designated by NAME in the KEYWORD package."
  (intern (string name) :keyword))

编辑:哦,我知道你不是,但无论如何这可能是有用的。