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))没有返回任何东西(或者确切地说是#),我想知道为什么 代码的初步调试(在第二行添加(显示服务水平))表明

我在Scheme中创建了程序
成员?
,如下所示:

(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
后面加了一个额外的括号。