Scheme 计划成员?功能
我在Scheme中创建了程序Scheme 计划成员?功能,scheme,Scheme,我在Scheme中创建了程序成员?,如下所示: (define member? (lambda (x los) (cond ((null? los) #f) ((if (eq? x (car los)) #t (member? x (cdr los))))))) 我做了两个测试用例,除了(member?'a'(bcd))没有返回任何东西(或者确切地说是#),我想知道为什么 代码的初步调试(在第二行添加(显示服务水平))表明
成员?
,如下所示:
(define member?
(lambda (x los)
(cond
((null? los) #f)
((if (eq? x (car los)) #t (member? x (cdr los)))))))
我做了两个测试用例,除了(member?'a'(bcd))
没有返回任何东西(或者确切地说是#
),我想知道为什么
代码的初步调试(在第二行添加
(显示服务水平)
)表明该过程会递归地运行列表,直到它变成一个空列表”()
,但不会被((空?服务水平)#f)
捕获。您可能需要查找如何使用调味品:
(define member?
(lambda (x los)
(cond
((null? los) #f)
((eq? x (car los)) #t)
(else (member? x (cdr los))))))
您可能需要查看如何使用cond
:
(define member?
(lambda (x los)
(cond
((null? los) #f)
((eq? x (car los)) #t)
(else (member? x (cdr los))))))
如果谓词的计算结果为真值,则条件中的仅谓词项将计算结果,但如果它是假值#f
,则不会计算结果。然后到下学期
如果您有一个If
或cond
,其中并非所有案例都得到处理,那么实施可以选择结果:
(let ((b 4))
(cond
((< b 2) 'less-than-2)
((zero? b) 'zero)))
; ==> "https://youtu.be/wd4Oxk11PA0?t=17s"
如果谓词的计算结果为真值,则条件中的仅谓词项将计算结果,但如果它是假值#f
,则不会计算结果。然后到下学期
如果您有一个If
或cond
,其中并非所有案例都得到处理,那么实施可以选择结果:
(let ((b 4))
(cond
((< b 2) 'less-than-2)
((zero? b) 'zero)))
; ==> "https://youtu.be/wd4Oxk11PA0?t=17s"
看看你的if
,它已经在cond
里面了。看看你的if
,它已经在cond
里面了。你刚刚算出了,而且是在几秒钟后才敲出同样的答案!我之前试过了,我想我在else
后面加了一个额外的括号。我刚刚算出来,几秒钟后就可以输入相同的准确答案了!我之前试过,我想我在else
后面加了一个额外的括号。