A conforming monad transformer to compute a result according to a spec.
RFC 2119 describes these terms:
MUST and MUST NOT: These describe absolute requirements or absolute prohibitions. However, some implementations still do not adhere to these. Some of those situations are fixable, and some are not.
If the situation is fixable, we error with an error of type ue.
If the situation is fixable, we can either error out (a strict implementation) with an error of type fe or apply the fix.
The fe parameter represents fixable errors, which can either be emitted as warnings, or errored on.
A predicate (fe -> Bool) decides whether to fix the error. (The predicate returns True if the fixable error is to be fixed.)
2. SHOULD and SHOULD NOT:
These describe weaker requirements or prohibitions.
The w parameter represents warnings to represent cases where requirements or prohibitions were violated.
Constructors
ConformTunConformT :: ReaderT (fe -> m Bool) (WriterT (Notes fe w) (ExceptT (HaltReason ue fe) m)) a
Instances7MonadError, MonadReader, MonadWriter, MonadTrans, Monad, Functor, …
Monad m => MonadError (HaltReason ue fe) (ConformT ue fe w m)Defined in conformance-0.1.0.0 · ConformanceMonad m => MonadReader (fe -> m Bool) (ConformT ue fe w m)Defined in conformance-0.1.0.0 · ConformanceMonad m => MonadWriter (Notes fe w) (ConformT ue fe w m)Defined in conformance-0.1.0.0 · ConformanceMonadTrans (ConformT ue fe w)Defined in conformance-0.1.0.0 · ConformanceMonad m => Monad (ConformT ue fe w m)Defined in conformance-0.1.0.0 · ConformanceFunctor m => Functor (ConformT ue fe w m)Defined in conformance-0.1.0.0 · ConformanceMonad m => Applicative (ConformT ue fe w m)Defined in conformance-0.1.0.0 · Conformance