使用高階函式而不是遞迴

如果存在表示右遞迴模式的更高階函式,則通常的做法是使用更高階函式而不是遞迴。在我們的例子中,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 2 3 4 5)) ;; => 15