gpt4 book ai didi

scheme - 有人可以解释方案中的 Cons 和 Append 之间的区别吗?

转载 作者:行者123 更新时间:2023-12-01 09:51:41 26 4
gpt4 key购买 nike

我阅读了它们,它们似乎都构建了一个列表,它们有什么区别?

最佳答案

cons是所有对的构造函数。

正确的列表是 () (空列表,又名 nil )或一对,其中 cdr是一个适当的列表。最后一个具有 () 的任何对链照原样 cdr是一个适当的列表(除了空列表本身)。

虚线列表是一对没有正确列表的对,因为它是 cdr .因此,最后一个 cdr 的一对链不是 ()匹配这个。

;; dotted lists
(cons 1 2) ; ==> (1 . 2)
(cons 1 (cons 2 3)) ; ==> (1 2 . 3) or (1 . (2 . 3))

;; proper lists
(cons 1 '()) ; ==> (1) or (1 . ())
(cons 1 (cons 2 '())) ; ==> (1 2) or (1 . (2 . ()))
append是一个使用 cons 的过程用从左到右的参数列表的所有元素制作一个列表。 append的常见实现因为只有两个列表是:

(define (append lst tail)
(if (null? lst)
tail
(cons (car lst)
(append (cdr lst)
tail))))
append如果除最后一个参数之外的参数之一不是正确的列表,则将失败。 Tail 和 可以是任何值:

(append '(1 2 3) '(4 5))       ; ==> (1 2 3 4 5) or (1 . (2 . (3 . (4 . (5 . ())))))
(append '(1 2 3) '(4 5 . 6)) ; ==> (1 2 3 4 5 . 6) or (1 . (2 . (3 . (4 . (5 . 6)))))
(append '(1 2 3) #f) ; ==> (1 2 3 . #f) or (1 . (2 . (3 . #f)))
(append '(1 2 . 3) '(4 5 . 6)) ; ==> error `car` of number not allowed

关于scheme - 有人可以解释方案中的 Cons 和 Append 之间的区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36498570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com