Named let
«Named let» is a variant of 
let
 that has the form
(let var bindings body)The 
<bindings>
 and 
<body>
 are just as in ordinary 
let
, except that 
<var>
 is bound within 
<body>
 to a procedure whose body is 
<body>
 and whose parameters are the variables in the 
<bindings>
. Thus, one can repeatedly execute the 
<body>
 by invoking the procedure named 
<var>
. For example, the iterative Fibonacci procedure (section 1.2.2) can be rewritten using named 
let
 as follows:
(define (fib n)
  (let fib-iter ((a 1)
                 (b 0)
                 (count n))
    (if (= count 0)
        b
        (fib-iter (+ a b) a (- count 1)))))Modify 
let->combination
 of exercise 
4.6
 to also support named 
let
.