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))]))