I was studying Racket lately, and it sounds very familiar now. DSLs, or dialects as Racket calls them, is surely way to go and improve productivity, it should however, always be possible to descent down, or escape from that DSL, where needed, to avoid the hacks that work around a certain limitation of this or that DSL. (lisp macros, wink wink)