Difference between append and cons racket
我试图了解缺点与追加之间在列表存储方式方面的区别。考虑这种情况:
1 2 | (define x '(hi, hello)) (define y '(randomvalue1, randomvalue2)) |
如果我假设那个电话
这两个列表上的
其中第一个指针指向
总而言之,x或y均未更改。明智的添加记忆的只有点对。
但是,当我用两个列表调用append时:
1 | (append x y) |
我假设为了使球拍避免更改
我的假设是否正确?
我更喜欢使用
的简写
在提出您的问题之前,我想提一个问题:
1 2 | (define x '(hi, hello)) (define y '(randomvalue1, randomvalue2)) |
将导致:
1 2 | (list 'hi ',hello) (list 'randomvalue1 ',randomvalue2) |
你的意思是写:
1 2 | (define x '(hi hello)) (define y '(randomvalue1 randomvalue2)) |
其结果是:
1 2 | (list 'hi 'hello) (list 'randomvalue1 'randomvalue2) |
?
现在,对于您的问题,这是
1 2 3 4 | (define (append x y) (cond [(empty? x) y] [(cons? x) (cons (first x) (append (rest x) y))])) |
直观上,它将