Take the 2-minute tour ×  Edit: I discovered a partial answer to
my own question in the process of writing this, but I think it
can easily be improved upon so I will post it anyway. Maybe
there's a better solution out there?  I am looking for an easy
way to define recursive functions in a let form without
resorting to letfn. This is probably an unreasonable request,
but the reason I am looking for this technique is because I have
a mix of data and recursive functions that depend on each other
in a way requires a lot of nested let and letfn statements.  I
wanted to write the recursive functions that generate lazy
sequences like this (using the Fibonacci sequence as an
example):  (let [fibs (lazy-cat [0 1] (map + fibs (rest fibs)))]
(take 10 fibs))  But it seems in clojure that fibs cannot use
it's own symbol during binding. The obvious way around it is
using letfn  (letfn [(fibo [] (lazy-cat [0 1] (map + (fibo)
(rest (fibo)))))]   (take 10 (fibo)))  But as I said earlier
this leads to a lot of cumbersome nes