「名前つき let」は let の構文上の変種で、一般的なループ構文を提供し、再帰を表現するのにも使うことができる。構文と意味論は通常の let とほぼ同じであるが、 <body> 中で <variable> が、仮引き数が変数群に束縛され本体部分が <body> に束縛された手続きに束縛される。そのため、 <variable> という名前の手続きを起動することで、 <body> の実行を繰り返すこともできる。
(let loop ((numbers ’(3 -2 1 6 -5)) (nonneg ’()) (neg ’())) (cond ((null? numbers) (list nonneg neg)) ((>= (car numbers) 0) (loop (cdr numbers) (cons (car numbers) nonneg) neg)) ((< (car numbers) 0) (loop (cdr numbers) nonneg (cons (car numbers) neg))))) ⇒ ((6 1 3) (-5 -2))