Thank you all for the recommendations and the explanations. As @jxy said, I
don't know a lot about the different options I put in the original question.
I'll go back to read documentation and your posts and see which way to go. I
already wrote a lot code using option 2 but if it's not the right approach, I'm
open to start from scratch. Assuming you are the one implementing a dynamic
general purpose language in Nim, and you probably need a way to represent all
possible values (literal values, arrays, maps, native values etc), what will
you pick?