Both languages you mentioned i highly recommend.
Lisp macros are another level, because they are part of the language - you can use all language primitives to transform forms however you like.
Haskell will give you a different view of programming. It's beautiful and concise, and implements all sorts of academic research in languages. Ocaml is similar in many respects.