(if p x y)
to
(if p (let () x) (let () y))
And then all other conditional, that is expressed as macros from if have the correct a let binding if we want this. This change will
make new code non compilable by old guile's but that is not a huge issue, just make a macro package that you introduce conditionally
to your project and recompile. The good thing is namely that issues will brake at compile time and not through some mysterious
run time bug.
Anyhow conditional defining vars is a common theme in other languages so I think it was kind of natural to implement if as it was done.
Regards
Stefan