使用命名的 let
在执行正文之前,普通的 let
形式将每个值绑定到其对应的标识符。使用“命名 let
”,然后可以递归地重新执行主体,为每个标识符传递新值。
#lang racket
(let sum-of-list ([l '(1 2 3)])
(if (null? l)
0
(+ (car l) (sum-of-list (cdr l)))))
;; => 15
通常使用 rec
作为 let 的名称,它给出:
#lang racket
(let rec ([l '(1 2 3 4 5)])
(if (null? l)
0
(+ (car l) (rec (cdr l)))))
;; => 15