获取了多架列表的第一个元素的Lisp
答
In Common Lisp,(some-value)
是一个单一元素的列表,由some-value
给出。
列表的经典图形表示示出了在作用一个单一的值列表是一个指针的“缺点”(对)到some-value
和nil
:
使得流汗它的car
产生some-value
,而cdr
产生nil
。
那么,这个s表达式是什么意思:((x))
?如果在第一个示例中用(x)
代替some-value
,则可以得到这个结果。也就是说,这不是一个“多支架列表”,而只是一个单一元素列表,它本身就是一个单一元素的列表(换句话说,一个列表中的车是单元素列表)。这样就可以图形展示为中下图:
所以,这一次得到x
你必须使用car
两次,写(car (car list))
(其实这可以缩写在共Lisp的有(caar list))
(看到reference)。
我留给你完成练习,得出对应于(((x)))
图,并找到如何从这个名单中提取x
。
答
这样的事情,比如:
(defun first-atom (c)
(if (consp c)
(first-atom (first c))
c)))
这是稍有不当,因为(first-atom 1)
是不是一个错误,它可能应该是:它需要一个缺点它调用递归当地FN做的工作外检查。你有点想法。
对不起,可能是拙劣的缩进:很难找到一个电话。
你如何创建这个漂亮的图形? – sds
@sds,我在我的Mac上使用旧版本的OmniGraffle。 – Renzo