The motivation for exporting the constructor is for downstream users and library authors to be able to support SafeT when temporarily removing the SafeT wrapper is necessary. This often happens when SafeT appears in negative position.
I wrapped SafeT's internal ReaderT environment in a opaque newtype Env, so as not to expose the internal details to users of this library.
I removed the unSafeT field name to prevent downstream users from confusing it with the similarly named runSafeT.
The motivation for exporting the constructor is for downstream users and library authors to be able to support
SafeT
when temporarily removing theSafeT
wrapper is necessary. This often happens whenSafeT
appears in negative position.I wrapped
SafeT
's internalReaderT
environment in a opaque newtypeEnv
, so as not to expose the internal details to users of this library.I removed the
unSafeT
field name to prevent downstream users from confusing it with the similarly namedrunSafeT
.