如果存在表示右递归模式的更高阶函数,则通常的做法是使用更高阶函数而不是递归。在我们的例子中,sum-of-numbers可以使用foldl定义: #lang racket (define (sum-of-numbers l) (foldl + 0 l)) (sum-of-numbers '(1 2 3 4 5)) ;; => 15 可以直接在列表中调用foldl: #lang racket (foldl + 0 '(1 ...