gpt4 book ai didi

lisp - 如何判断列表是否有第三项?

转载 作者:太空宇宙 更新时间:2023-11-03 18:37:29 25 4
gpt4 key购买 nike

我有一个函数接受一个包含两个或三个元素的列表。

;; expecting either ((a b c) d) or ((a b c) d e)
(define (has-third-item ls)
(if (null? (caddr ls))
false
true)
)

但是这段代码失败了

mcar: expects argument of type <mutable-pair>; given ()

在 (null? (caddr ls)) 表达式上。

我也试过

(eq? '() (caddr ls))

但是也没用。如何判断是否有第三项?

最佳答案

你不需要 caddr,你想要 (if (null? (cddr ls)) ... 或者只是使用 length 来查找列表的长度,并将它与你感兴趣的值进行比较。

终止列表的 '() 将始终位于一对的 cdr 位置,因此在 car 位置(cad+r 将执行)查找它不会有成效。

关于lisp - 如何判断列表是否有第三项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/664288/

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