gpt4 book ai didi

lisp - 如何将字符串转换为符号以用作 Lisp "assoc"函数中的键?

转载 作者:太空宇宙 更新时间:2023-11-03 18:45:26 24 4
gpt4 key购买 nike

我在 Common Lisp 中有这个关联列表:

(defvar base-list (list (cons 'a 0) (cons 2 'c)))

当我的参数是 string 类型时,我必须调用 assoc

对于 (A . 0) 对,我必须将“a”转换为符号,对于 (2 . C) 对,我必须将“2"到一个符号。我怎样才能做到这一点?

这应该像这样工作:

CL-USER 28 : 1 > (assoc (convert-string-to-symbol "a") base-list)
(A . 0)
CL-USER 28 : 1 > (assoc (convert-number-to-symbol "2") base-list)
(2 . C)

我尝试使用 intern 但得到了 NIL:

CL-USER 29 : 1 > (assoc (intern "a") base-list)
NIL

最佳答案

你想要的函数叫做read-from-string:

CL-USER> (read-from-string "a")
A
1
CL-USER> (read-from-string "2")
2
1
CL-USER>

请注意,在大多数实现中,基于使用 internfind-symbol 的解决方案不适用于表示数字(例如“2”)的字符串。

关于lisp - 如何将字符串转换为符号以用作 Lisp "assoc"函数中的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11070985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com