As you guessed, the content of the memory map will be variants. The memory will contain uint32 from time to time. But it will also be int32, float32, addresses, and other things. The hardware I am looking at emulating is the OpenGenera lisp machine where memory content was tagged. So it seems that what I was looking for is not possible in Nim (not that I had any expectations in Nim or any other language).
Thanks to all for taking the time to answer.