this actually started with @c_cube recommending to reuse the Yojson #json #parser, which is using a generated lexer, so it keeps its own sort of state and wouldn't be possible to reuse with an interface like this.
And then I just threaded a custom state throughout a Format Deserializer, which means anyone can pick whatever way of reading content they want.
Which yes means #yojson gets its own lexer_state type threaded.
Now if only Yojson gave me a clear peek/drop/next API, that'd be dope.