Closed ghost closed 5 years ago
I don't see the connection between the third law and invertibility, sorry.
Isn't the third law really the essence of UnliftIO
? MonadUnliftIO
takes m a
into IO a
, and MonadIO
takes it back. In that sense, isn't this equivalent to invertibility?
Yes, sort of, but it's missing the essential distinguishing fact of the law: that the monad context is the same, and there are no missing monad state updates.
Isn't "monad context is the same" implied by invertibility? Maybe I don't fully understand.
Addressed in #41
Isn't the law equivalent to "lifting must be invertible"?