【发布时间】:2020-01-23 09:27:12
【问题描述】:
如何专门检查(a . b) Guile 形式的点列表? srfi-1 的 dotted-list 奇怪地返回 #t 也用于例如数字(从什么时候开始也有数字列表?https://www.gnu.org/software/guile/manual/html_node/SRFI_002d1-Predicates.html)!对于普通列表,pair? 也将评估为 #t 。有没有办法将(a . b) 构造与其他事物区分开来,而b 部分(cdr)本身可以是任何对象,包括其他关联列表等?
这是我没想到也无法理解的:
(dotted-list? '(c . ((d . 3)
(e . 4)))) ; ===> #f
(dotted-list? 3) ; ===> #t
【问题讨论】:
-
cdr是正确列表的对是正确列表。 “点”版本将是 '(c . ((d . 3) . (e . 4)))。