Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
- ensureAccess :: MonadSafeAccess d m => d -> m ()
- newtype Capability d = MkCapability {
- runCapability :: d -> AccessDecision
- type Capabilities d = [Capability d]
- data AccessDecision
- newtype SafeAccessT d m a = SafeAccessT {
- runSafeAccessT :: Capabilities d -> m (Either d a)
- class Monad m => MonadSafeAccess d m where
- getCapabilities :: m (Capabilities d)
- denyAccess :: d -> m ()
- liftExceptT :: ExceptT d m a -> SafeAccessT d m a
Documentation
ensureAccess :: MonadSafeAccess d m => d -> m () Source
Check that the access is legal or make the monad "fail".
newtype Capability d Source
Allow things to be accessed. See ensureAccess
.
d
is the type describing an access.
MkCapability | |
|
type Capabilities d = [Capability d] Source
data AccessDecision Source
Control the decision process.
The constructors are ordered by prevalence. For instance, if two capabilities
respectively return AccessGranted
and AccessDenied
,
the final decision will be AccessDenied
.
AccessDeniedSoft | No but another |
AccessGranted | Final yes (see explanation) |
AccessDenied | Final no |
newtype SafeAccessT d m a Source
A simple monad (transformer) to ensure that data are accessed legitimately.
The return value is either the description of an access having been denied (left) or the result of the normal computation (right).
SafeAccessT | |
|
MonadError e m => MonadError e (SafeAccessT d m) | |
MonadReader r m => MonadReader r (SafeAccessT d m) | |
MonadState s m => MonadState s (SafeAccessT d m) | |
MonadWriter w m => MonadWriter w (SafeAccessT d m) | |
Monad m => MonadSafeAccess d (SafeAccessT d m) | |
MonadTrans (SafeAccessT d) | |
Monad m => Monad (SafeAccessT d m) | |
Functor f => Functor (SafeAccessT d f) | |
Applicative f => Applicative (SafeAccessT d f) | |
MonadIO m => MonadIO (SafeAccessT d m) |
class Monad m => MonadSafeAccess d m where Source
getCapabilities :: m (Capabilities d) Source
denyAccess :: d -> m () Source
MonadSafeAccess d m => MonadSafeAccess d (MaybeT m) | |
MonadSafeAccess d m => MonadSafeAccess d (ListT m) | |
MonadSafeAccess d m => MonadSafeAccess d (IdentityT m) | |
(MonadSafeAccess d m, Monoid w) => MonadSafeAccess d (WriterT w m) | |
MonadSafeAccess d m => MonadSafeAccess d (ReaderT r m) | |
MonadSafeAccess d m => MonadSafeAccess d (ExceptT e m) | |
MonadSafeAccess d m => MonadSafeAccess d (ContT e m) | |
Monad m => MonadSafeAccess d (SafeAccessT d m) | |
(MonadSafeAccess d m, Monoid w) => MonadSafeAccess d (RWST r w s m) |
liftExceptT :: ExceptT d m a -> SafeAccessT d m a Source
Lift an action from ErrorT
to SafeAccessT
.