I have been thinking about a modified version of LET that takes a sequence of expressions (like begin) that are either assignments or not assignments. Then it would collect all consecutive assignments together into a letrec. For example:
(let
(foo)
(= a 1)
(= b 2)
(= c 3)
(bar)
(= x 4)
(= y 5)
(baz))