2016-09-15 99 views
1

在下面的代码:为什么这个函数返回void而不是虚假

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

输出继电器

#<void> 

为什么这个函数返回void而不是虚假的,如memberi FN编码?

回答

4

原因是在cond,(memberi ...)的最后一种情况下是测试,如果它是真的,则没有任何返回,因为没有任何后续事件。

功能只需更改为:

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