1) I think you're missing the whole point of 'let.
arc> (= x 5)
5
arc>
(let x 3 ; "declare" a var with value 3
(= x (* x x))
(+ x 2))
11
arc> x
5
If you want to separate the declaration from the initial value... why? What happens if you use the variable in between those two times?
2) For what it's worth, my Lathe library provides a certain sort of namespaces, and I've been using those pretty happily. (http://arclanguage.org/item?id=11610) But of course I'd be happy with them, 'cause I'm their author. :-p
That said, I think 'symbol-macro-let would be nifty. I wonder if it could be even more useful to have some way to build a lambda whose free variables were treated in a custom way (as opposed to just being globals). Either one of these could be a basis for scoped importing of namespaces.