Thanks Richard! Yes Julia isn't quite as flesible as LISP. Macros will stand out more so they look less like a natural part of the language. OTOH I think that is a pragmatic tradeoff. It makes things more maintainable.
Julia is semantically very similar to LISP. Everything is really just nested expressions. So you can actually write Julia in LISP syntax. Check this REPL addon that lets you do that: https://github.com/swadey/LispSyntax.jl
Personally I feel it is a bit of a tossup. I am not a LISP expert, but I find that Julias multiple dispatch and syntax makes Julia in practice easier to to mould to your needs than LISP.
Pervasive multiple-dispatch really is a game changer IMHO. It gives you quickly abstractions that require a lot more work to achieve in your average LISP system.
As you say CLOS has it, but that is just one of many features. It is not how you learn to write LISP or Scheme.
LISP of course benefits from the ability to more easily modify things on the fly. Julia introduce some rigidity in that types cannot be mutated. But then again without this limitation we would never have been able to make multiple-dispatch high performance. And only by having it be high-performance can you use it pervasively.
I can imagine a LISP system that used multiple-dispatch everywhere would have ended up slow to the point of being unusable.