【发布时间】:2015-11-23 10:51:41
【问题描述】:
我正在寻找创建一个以变量为值的关联列表(common lisp)。
让我用(虚拟)代码更好地解释一下:
(defun mylist-create (val1 val2)
(setq alist '((key1 . val1)
(key2 . val2)))
;; do other things here
;; and return the list
alist)
(format t "~a~%" (mylist-create "toto" "tata"))
这里的问题是“val1”和“val2”不被视为变量,因为列表不是用它们的值而是用它们的名称创建的。
如何在列表创建中提取它们的价值? “setf and assoc”是添加键/值对的唯一解决方案吗?
【问题讨论】:
-
Alist是一个全局变量(它可能是也可能不是全局特殊的)。你的 Lisp 实现应该给你一个警告。请改用let进行本地绑定。 -
当然我用了“let”,我给出了一个简单而虚拟的例子。谢谢!
标签: list lisp common-lisp