Tho*_*rig 2 lisp scheme list cons racket
我目前正在玩LISP.一切都很好,但我无法理解以下问题.
我有这个追加操作:
(define (append l1 l2)
(if (eq? l1 null)
l2
(cons (first l1)
(myappend (rest l1) l2))))
Run Code Online (Sandbox Code Playgroud)
我这样使用它:
(myappend (cons (cons 1 2) null) '(4 5))
Run Code Online (Sandbox Code Playgroud)
而Racket的结果 是:
'((1 . 2) 4 5)
Run Code Online (Sandbox Code Playgroud)
但为什么?在我的观点中,它应该是'(1 2 4 5),因为cons返回一个列表,myappends附加两个列表.有谁能够帮我?LISP在做什么?
Jim*_*wis 11
cons 返回一个虚线对,不一定是列表.
(cons 1 2) 回报 (1 . 2)
(cons 1 null) 回报 (1)
(cons 1 (cons 2 null)) 回报 (1 2)