bea*_*rdc 2 lisp string list common-lisp
我正在尝试学习Common Lisp(sbcl)并通过基本的defuns进行练习.我正在尝试编写一个,在列表中添加所有字符串的长度.
早期步骤是测试第一个元素是否为字符串.我以为你可以用这个来打电话
(stringp (car '(s1 s2)))
其中s1和s2是字符串.使用stringp测试s1,并询问列表中的汽车似乎工作正常,但将它们组合在一起并不能满足我的期望:
CL-USER> (car '(s1 s2))
S1
CL-USER> (stringp s1)
T
CL-USER> (stringp (car '(s1 s2)))
NIL
Run Code Online (Sandbox Code Playgroud)
我是否误解了stringp函数或列表的工作方式?
谢谢
'(s1 s2)
是包含符号s1
和列表的列表s2
.因此(car '(s1 s2))
返回符号s1
(正如您可以看到REPL打印的事实S1
而不是变量中存储的任何字符串s1
.由于符号不是字符串,因此stringp
返回false.
如果您实际使用字符串列表,它将按预期工作:
* (car (list s1 s2))
"contents of s1"
* (stringp (car (list s1 s2)))
T
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
111 次 |
最近记录: |