I am perusing EOPL and I am implementing all the language models and solving all the exercises in Erlang.
This process benefited me a lot. Using language other than Racket, you have to first understand the essence of the language models(features), and then rewrite it in a different language from the textbook.
The reason why I choose erlang is that I love Erlang and Erlang has tools for type-checking. However, I think it will be better to choose some static type functional language, such as ML, Haskell.
I do try my best to solve each problem, although some of them are so hard. I keep an annotation of my thinking for almost every problem. The discussion is welcome.