
On Thu, Aug 29, 2019, 11:42 PM Li-yao Xia
This looks like an interesting problem, but I'm a little confused about the objective. In what sense is it "faithful"?
to prevent the computation from gaining unauthorized access to the state.
Does that property have a formal definition? Are we looking for a one-to-one correspondence between a "better" WriterT and the naive WriterT?
Exactly. They should be isomorphic as sets and "morally" isomorphic as monads. There will of course be distinctions in strictness
What about (w -> s -> s) instead of ((w -> w) -> (s -> s))? It seems that `pass` needs the (w -> w), but if we leave `pass` aside, does that still look about right?
Yes. That's the type I started with, and then I got to `pass` and realized it just wouldn't do the trick.