It turns out that making a language that did this satisfactorily requires that you build a language that supports amazing flexibility and expressiveness everywhere in the language which ended up making it a fantastic general purpose programming language.
The beauty is that Julia's AST is a language object that you can manipulate at runtime or compile time and make whatever modifications you like. This makes Julia code itself a wonderful intermediate representation for whatever domain specific language you'd care to build and the domain of that language need not be numeric.
Julia is a pretty awesome general purpose PL; it's motivating use may have been for number crunchers, but the result is strength in a number of areas of much broader application.