【发布时间】:2012-05-29 04:18:50
【问题描述】:
我正在寻找一种可能不冗长的可移植方式来初始化 Common Lisp 中的哈希表。例如。适用于常量哈希表的东西,也适用于预加载变量哈希。在 CLISP 中我正在使用:
(defconstant +my-map+ #S(HASH-TABLE :TEST FASTHASH-EQ
(key1 . "value1")
...
(keyN . "valueN")
))
但不幸的是,这种格式仅适用于 CLISP。
【问题讨论】:
-
请注意,例如aiai.ed.ac.uk/~jeff/lisp/cl-pitfalls 警告不要将哈希表用作
defconstant表单的值。 -
谢谢大家。标准中似乎缺少此基本功能,必须以某种方式添加。与其引入新语法、模仿 Perl 或 PHP,不如编写一个包含 make-hash-table 并添加选项 :initial-contents 的宏,该选项与标准中支持的选项相同,例如 make-array?我认为这可能不会很有效,因为内容将由必须遍历的 alist 指定,但它至少与 Lisp 语法更一致。
标签: initialization constants hashtable common-lisp