我正在努力学习口齿不清,因为我正在迈出第一步。
我如何获得以下列表中的c元素表单:(a b (c.d))
我尝试过:(caar (last '(a b (c.d))))
但它返回c.d而不仅仅是c
但是,如果c之间有空格,则可以使用。 ,d ie:(caar (last '(a b (c . d))))
我正在尝试解决的问题是指定的列表没有空格。可以这样做,还是练习中的拼写错误?
感谢。
LE :Uisng GNU Clisp http://clisp.cons.org/ 它可能是由实施引起的问题吗?
答案 0 :(得分:4)
你的代码是正确的,这是一个错字(或者可能是一个非常糟糕的字体?)。
在Lisp中(Common Lisp和Scheme是我刚才测试的两个,我不知道Clojure),[几乎]符号之间的唯一划分是空格和圆括号。即使 。用作cons
的文字语法,如果键入'(c.d)
,则列表中会出现一个符号,而不是符号单元格中的两个符号。
例如,
'c.d ; is one symbol
'(c . d) ; is two symbols in a single cons cell
'((c)d) ; is two symbols, the first in a nested list
编辑:由于您使用的是Common Lisp,因此the list of relevant characters和the reader algorithm。总而言之,(
和)
终止字符,而.
则不是。 CLisp根据Common Lisp规范执行。
答案 1 :(得分:2)