我的程序创建虚拟数据.这些虚拟数据的一部分是符号形式的键:( fixnum值以其罗马数字作为符号作为键).程序将这些虚拟键值对存储在我正在开发的数据结构中.(lambda (i) (make-symbol(format nil"~@r"i)))
我尝试使用REPL中的这些符号来测试按键检索值.然而:
(equal (make-symbol "IX") (make-symbol "IX"))
Run Code Online (Sandbox Code Playgroud)
零
(equal (make-symbol "IX") 'IX))
Run Code Online (Sandbox Code Playgroud)
零
有没有办法输入先前make-symbol在REPL中创建的符号,以便两者都是equal?
正如@coredump建议的那样,使用实习生将这些符号添加到某个包中,如下所示:
CL-USER> (defpackage :my-symbols)
#<Package "MY-SYMBOLS">
CL-USER> (intern "IX" :my-symbols)
MY-SYMBOLS::IX
NIL
CL-USER> (intern "IX" :my-symbols)
MY-SYMBOLS::IX
:INTERNAL
CL-USER> (eql (intern "IX" :my-symbols)
(intern "IX" :my-symbols))
T
CL-USER>
Run Code Online (Sandbox Code Playgroud)