Common lisp 使用公共Lisp创建一对对
我需要使用CommonLisp创建一个包含两个对的对 输出需要是:Common lisp 使用公共Lisp创建一对对,common-lisp,cons,Common Lisp,Cons,我需要使用CommonLisp创建一个包含两个对的对 输出需要是: ((1.2)。(3.4)) 文献说明(cons(cons 1 2)(cons 3 4))应该输出我需要的东西,但当我运行时,我得到: ((1.2)3.4) 感谢您的帮助。这样就可以了:(cons(cons 1 2)(cons(cons 3 4)空)) 祝你好运 在Lisp中 ((1.2)。(3.4)) 及 ((1.2)3.4) 完全一样。您可以通过计算”((1.2)。(3.4))进行检查 如果你想一想,3是cdr的汽车,所以它是
((1.2)。(3.4))
文献说明(cons(cons 1 2)(cons 3 4))
应该输出我需要的东西,但当我运行时,我得到:((1.2)3.4)
感谢您的帮助。这样就可以了:(cons(cons 1 2)(cons(cons 3 4)空))
祝你好运 在Lisp中
((1.2)。(3.4))
及
((1.2)3.4)
完全一样。您可以通过计算”((1.2)。(3.4))
进行检查
如果你想一想,3
是cdr的汽车,所以它是不正确列表的第二个元素,所以对(1.2)
是第一个元素,3
作为第二个元素,它有4
来终止它
它们只是两种查看相同配置的方式:
#xA
与10
完全相同,但打印时,系统设置决定了数字的打印方式。原因是fixnum没有基,但是视觉表示有基。正如#xA
与10
相同,((1.2)。(3.4))
与((1.2)3.4)
相同
错觉是我们有清单。为了做到这一点,我们将具有nil或一对作为尾部的对显示为与具有其他值作为尾部的对不同的对。。列表(12)
建模为(1.(2)()
。规则是这样的:只要尾是nil或一对,就可以省略这对点和尾的第一个括号。递归地应用它,(1.(2)()
显示为(12)
,((1.2)。(3.4))
显示为“((1.2)3.4”)
为了使幻觉完整,读取器执行相反的操作,因此当它读取(12)
时,它会在内存中创建(1.(2)()
要真正成为一名优秀的Lisp程序员(使用任何方言),您需要能够看到
(12)
中省略的点和括号。当您这样做时,您需要用(a(b c)d)
做什么才能检索c
(显然是(cadadr'(a(b c)d))
)。当你掌握了这一点,你会“看到”((1.2)。(3.4))
谢谢,这更接近我所需要的,但是它仍然没有提供区分两个pairsis空的点()应该是”()
或无?这是((1.2)(3.4))
这不是@Higgins所要求的结构。谢谢,这是有道理的。节日快乐。这个问题的可能重复是询问Scheme中的案例,但Common Lisp和Scheme的conses和打印约定是相同的。它可能不是重复的(注意“可能”),但我认为解释cons单元格和点的打印约定的答案将解释为什么((1.2)3.4)
和((1.2)。(3.4))
只是同一事物的不同视觉表示。
CL-USER 4 > (equal '((1 . 2) . (3 . 4))
'((1 . 2) 3 . 4 ))
T