racket Recursion Using higher-order functions instead of recursion


Example

It is common practice to use higher order functions instead of recursion, if there is a higher order function which expresses the right recursion pattern. In our case, sum-of-numbers can be defined using foldl:

#lang racket
(define (sum-of-numbers l)
  (foldl + 0 l))
(sum-of-numbers '(1 2 3 4 5)) ;; => 15

It is possible to call foldl directly on the list:

#lang racket
(foldl + 0 '(1 2 3 4 5)) ;; => 15