Scheme 为什么这个函数返回void而不是false

Scheme 为什么这个函数返回void而不是false,scheme,racket,Scheme,Racket,在以下代码中: (define (memberi sl item (i 0)) (cond [(empty? sl) #f] [(equal? (first sl) item) i] [(memberi (rest sl) item (add1 i))] )) (define tstlst (list 1 2 3 4 3 5 2 6 2 6 8 5 3 9 2 4 2 5)) (println (memberi tstlst 10)) 输出 # 为什么

在以下代码中:

(define (memberi sl item (i 0))
  (cond
    [(empty? sl) #f]
    [(equal? (first sl) item) i]
    [(memberi (rest sl) item (add1 i))]
    ))

(define tstlst (list 1 2 3 4 3 5 2 6 2 6 8 5 3 9 2 4 2 5))

(println (memberi tstlst 10))
输出

#

为什么此函数返回memberi fn中编码的void和not false?

原因是在
条件的最后一种情况下,
(memberi…
是测试,如果为true,则不返回任何内容,因为后面没有任何内容

只需将函数更改为:

(define (memberi sl item (i 0))
  (cond
    [(empty? sl) #f]
    [(equal? (first sl) item) i]
    [else (memberi (rest sl) item (add1 i))]))

原因是在
cond
的最后一种情况下,
(memberi…
是测试,如果为真,则不返回任何内容,因为后面没有任何内容

只需将函数更改为:

(define (memberi sl item (i 0))
  (cond
    [(empty? sl) #f]
    [(equal? (first sl) item) i]
    [else (memberi (rest sl) item (add1 i))]))