gpt4 book ai didi

list - cond with 列表中的 Scheme

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

问题采用一个列表,例如 L = (4 11 16 22 75 34) 并针对条件(模数 2)进行测试,然后返回一个列表,其中包含列表中通过测试的所有项目,例如 newL = (4 16 34 )

代码如下:

(define clean-list
(lambda (x)
(list x (test x))))

(define test
(lambda (x)
(cond (= 0 (modulo (car x) 2))
(cons (car x) (test(cdr x)))
(else (test(cdr x))))
))

输出:

   ((4 11 16 22 75 34) 0) 

我调试了代码,它进入 (modulo (car x) 2) 然后返回到 clean-list 并退出,所有这些都是在第一次运行之后,请解释一下以及为什么它在列表末尾返回 0。此外,我们将不胜感激任何反馈或代码改进。

最佳答案

您缺少一组括号。您还缺少递归触底测试。

(define test
(lambda (x)
(cond ((eq? x '()) '())
((= 0 (modulo (car x) 2))
(cons (car x) (test(cdr x))))
(else (test(cdr x))))
))

DEMO

cond 的一般语法是:

(cond (<test1> <result1>)
(<test2> <result2>)
...)

在您的代码中 <test1>只是= , 不是 (= 0 (modulo (car x) 2)) .

关于list - cond with 列表中的 Scheme,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22314933/

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