gpt4 book ai didi

list - 如何在 Scheme 中编写自己的 "list?"程序

转载 作者:行者123 更新时间:2023-12-01 11:14:28 29 4
gpt4 key购买 nike

我正在尝试编写自己的“列表?”计划中的谓词。我知道列表的定义: 1. en 空列表 2. pair,其 cdr 是一对

我知道我的代码是错误的,因为它在每一对上都返回真值,但每一对都不是列表。我不知道如何实现列表的 cdr 也必须是一对的条件。

(define (my-list? x)
(if (equal? x ()) #t
(pair? x)))

最佳答案

list?过程检查列表是否为 proper (嵌套的 cons-cells 以 null 值结尾),因此我们必须考虑三种情况:

(define (my-list? x)
(cond ((null? x) #t) ; empty list
((pair? x) (my-list? (cdr x))) ; pair, advance recursion
(else #f))) ; atom

null 值被认为是一个空列表。如果我们是一对,那么我们通过递归调用过程来推进它的 cdr。如果它不是 null 也不是一对,那么它就是一个原子。这将涵盖边缘情况,例如:

(my-list? 42)
=> #f
(my-list? (cons 1 2))
=> #f

并且将为正确的列表返回 true:

(my-list? '())
=> #t
(my-list? (cons 1 (cons 2 '())))
=> #t

关于list - 如何在 Scheme 中编写自己的 "list?"程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54493220/

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