Lisp之间的区别(cons’a(cons’b’c))和(cons’a'(b.c))
有什么区别:
(cons 'a (cons 'b 'c)) ;; (A B . C) 和 (cons 'a '(b.c)) ;; (A B.C) 我需要创建以下列表((a.b).c)使用cons,所以我试图理解那个“.”代表. L.E.:我有以下(cons(cons’a’b)’c)但它产生((A.B).C)而不是((A.B).C)(注意额外的空格) 解决方法
空格用于分隔列表标记. A.B是单个令牌. (A.B)是一个包含单个元素的列表. (A.B)是一个cons单元,其中A为汽车,B为cdr.
cons单元格是一对“东西”(对象).在你的情况下,这些东西是符号,它们被命名为A,B等.例如,这种单元格的印刷表示是(A.B).这称为“点符号”.第一个元素称为“car”,第二个元素称为“cdr”. 功能缺点创建了这样一个单元格. (cons’a’b)因此产生细胞(A.B).请注意,名称始终在内部升级. 这很可能是你老师想要的,所以((A.B).C)是正确的输出,你的代码是正确的答案.这是汽车指向另一个小区的小区,cdr包含C.其他小区是汽车包含A和cdr B的小区. 顺便说一下,列表是这种缺点单元格的线性链,这样汽车总是保持一个值,而cdr指向列表的其余部分.最后一个cdr无处可寻(在Lisp中称为NIL).在点表示法中,列表例如是(A.(B.(C.NIL))).由于列表很重要,因此可以将它们写得更短:(A B C).如果最后一个CDR具有值而不是NIL,则以点表示法显示,例如,(A.(B.(C.D))))可以写成(A B C.D). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |