我正在尝试找出如何在Scheme过程中进行“早期返回”,而不使用顶层的if
或cond
结构。
if
或cond
结构。(define (win b)
(let* ((test (first (first b)))
(result (every (lambda (i) (= (list-ref (list-ref b i) i) test))
(enumerate (length b)))))
(when (and (not (= test 0)) result) test))
0)
例如,在上面的代码中,如果满足
when
条件,我希望win
返回test
,否则返回0。然而,实际发生的是,无论when
条件的结果如何,该过程都将始终返回0。我之所以以这种方式构造我的代码,是因为在这个过程中,我需要执行许多复杂的检查(类似于示例中的多个
let*
块),把所有内容放在一个大的cond
中会非常笨拙。