use*_*999 2 string list common-lisp
我正在学习Common Lisp并编写一个简单的密码生成器作为介绍项目.
这是我的代码:
(setq chars
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
(print (nth (random (length chars)) chars))
Run Code Online (Sandbox Code Playgroud)
但是使用CLISP我就得到了
*** - NTH: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" is not a list
Run Code Online (Sandbox Code Playgroud)
我认为Lisp中的每个字符串都是一个列表?如何将字符串"转换"到列表中?
NTH仅适用于列表.字符串不是列表,而是字符的向量.
CL-USER 7 > (char "abc" 1)
#\b
Run Code Online (Sandbox Code Playgroud)
由于字符串也是序列,因此所有序列操作都适用.请参阅:序列字典.
CL-USER 8 > (elt "abc" 1)
#\b
Run Code Online (Sandbox Code Playgroud)