tvix/eval: Blackholes need to be pretty printed in a friendly manner sometimes

#369
Opened by sterni at 2024-01-17T14·55+00

It is possible to sort of observe blackholes using builtins.trace (this is, I think, the only way though):

tvix-repl> let x = builtins.trace { x = x; x_repeated = x; } true; in x
trace: { x = internal[thunk(blackhole)]; x_repeated = <CYCLE>; } :: set
=> true :: bool

Ideally, this has a friendlier output (C++ Nix uses «potential infinite recursion», though I'm not sure how helpful that is), especially since together with cycle detection it turns out kind of weird.