Re: Why do I get table implementation instead of the table during compile time?
You can't rely on what repr/$ prints at compile-time. Object variant used to display all the branches in the past as well. seq at compile-time are the same as array. And enums/bool are the same as integers so when crossing some proc boundaries you get an unexpected type: [https://github.com/nim-lang/Nim/issues/7375](https://github.com/nim-lang/Nim/issues/7375)
Re: Why do I get table implementation instead of the table during compile time?
It turns our other types are not passed as I expected too. SqlQuery is passed as string, which conforms to what @jlp765 said about reprs.
Re: Why do I get table implementation instead of the table during compile time?
> debugEcho is showing you the table repr debugInfo shows different things when called in different places. When called at the end of the proc that returns the table, it prints the table properly. When called downstream on the called proc result, it prints the implementation details. So, even if it prints repr, because the reprs are different in two cases, that means that the things they represent are different. > Write your own $ proc for type Table[string, SqlQuery] so that > >echo > tableSchemas2 > > gives you what you want. My goal is not to print the table or get it in a prettified string form. I need to access the table's values by key and iterate over values. I can't do that because the "table" I'm getting is not a Table really.
Re: Why do I get table implementation instead of the table during compile time?
`debugEcho` is showing you the table repr Write your own `$` proc for type `Table[string, SqlQuery]` so that `echo tableSchemas2` gives you what you want.