In addition to Andrea's very good examples, there is also [https://github.com/c-blake/cligen](https://github.com/c-blake/cligen) which can generate a command parser-dispatcher from `proc` signatures or from-command-line initters from types. Everyone knows about CLI parsers. I think it's a real time saver. The macro code itself is pretty hairy, though.
Much macro code in Nim is pretty involved to handle many cases. If you are looking to just get a fully worked out introduction, I think that `memo` code is the best place to start.
