because builtins.trace (for whatever reason?) evaluates its first argument only shallowly.
Changing the trace expression to:
builtins.trace (builtins.toJSON some-list) false;
helps a lot, but as soon as one tries to print a long list or a structure with some complexity the output is completely unreadable, and it's not like it can easily be piped into jq (I mean... &| grep ^trace: | sed 's/trace: //' | jq works*, but there must be a "better" way?)
(*) in fish shell, IDK about bash</code></code>
edit: It's not like I specifically want JSON output: any format will do (ideally, nix would be nice)