I think you will find that Clojure offers many of things that you like about Racket or CL, while also getting rid of a lot of the complexity of CL (CL is not really a functional language, and hardly can be considered an immutable one).
Clojurescript, which is nearly identical semantics to Clojure, also is quite a practical skill for front-end development.