As John Clements said, Racket does this better than any other language.
I'm no Haskell expert. Some of the people on this list are.
My primary motivation for learning more Haskell is to make my Scala code better.
We write a lot of Scala at work, because we have a lot of legacy JVM libraries(jars), and Scala is much more fun and to the point than Java.
Racket's macro system is the best I've seen in my lifetime (58.962 years so far).
With that macro system you can do anything that I've ever needed to do and much more.
My main use of the macro system these days is to define DSLs (domain-specific languages) useful to meteorologists.
The art in that is to figure out how to seduce meteorologists into craving the DSLs.
The art of seduction is knowing what people want and giving it to them.
I'm overstating the seduction part, but getting people to use your stuff is the hardest puzzle to solve.
That puzzle is much easier to solve in Racket than it is in Haskell, however powerful Haskell's type wizardry.
Geoff