Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Rerefined.Refine
Synopsis
- data Refined p a
- refine :: forall p a. Refine p a => a -> Either RefineFailure (Refined p a)
- unrefine :: Refined p a -> a
- data Refined1 p f a
- refine1 :: forall p f a. Refine1 p f => f a -> Either RefineFailure (Refined1 p f a)
- unrefine1 :: Refined1 p f a -> f a
- data RefineFailure
- prettyRefineFailure :: RefineFailure -> Text
- prettyRefineFailure' :: RefineFailure -> Text
Refined
a
refined with predicate p
.
refine :: forall p a. Refine p a => a -> Either RefineFailure (Refined p a) Source #
Refine a
with predicate p
.
Refined1
f a
refined with predicate p
.
We may derive legal Functor
, Traversable
instances for this as
Refine1
guarantees that the predicate only applies to
the functor structure. That is, you _may_ alter a Refined1
without
re-asserting its predicate, provided your changes are made without altering
the structure/shape of f
(e.g. fmap
, traverse
).
Instances
Lift (f a) => Lift (Refined1 p f a :: Type) Source # | |
Foldable f => Foldable (Refined1 p f) Source # | |
Defined in Rerefined.Refined Methods fold :: Monoid m => Refined1 p f m -> m # foldMap :: Monoid m => (a -> m) -> Refined1 p f a -> m # foldMap' :: Monoid m => (a -> m) -> Refined1 p f a -> m # foldr :: (a -> b -> b) -> b -> Refined1 p f a -> b # foldr' :: (a -> b -> b) -> b -> Refined1 p f a -> b # foldl :: (b -> a -> b) -> b -> Refined1 p f a -> b # foldl' :: (b -> a -> b) -> b -> Refined1 p f a -> b # foldr1 :: (a -> a -> a) -> Refined1 p f a -> a # foldl1 :: (a -> a -> a) -> Refined1 p f a -> a # toList :: Refined1 p f a -> [a] # null :: Refined1 p f a -> Bool # length :: Refined1 p f a -> Int # elem :: Eq a => a -> Refined1 p f a -> Bool # maximum :: Ord a => Refined1 p f a -> a # minimum :: Ord a => Refined1 p f a -> a # | |
Traversable f => Traversable (Refined1 p f) Source # | |
Defined in Rerefined.Refined Methods traverse :: Applicative f0 => (a -> f0 b) -> Refined1 p f a -> f0 (Refined1 p f b) # sequenceA :: Applicative f0 => Refined1 p f (f0 a) -> f0 (Refined1 p f a) # mapM :: Monad m => (a -> m b) -> Refined1 p f a -> m (Refined1 p f b) # sequence :: Monad m => Refined1 p f (m a) -> m (Refined1 p f a) # | |
Functor f => Functor (Refined1 p f) Source # | |
Show (f a) => Show (Refined1 p f a) Source # | |
refine1 :: forall p f a. Refine1 p f => f a -> Either RefineFailure (Refined1 p f a) Source #
Refine f a
with functor predicate p
.
Errors
data RefineFailure Source #
Predicate validation failure.
Instances
Show RefineFailure Source # | |
Defined in Rerefined.Predicate Methods showsPrec :: Int -> RefineFailure -> ShowS # show :: RefineFailure -> String # showList :: [RefineFailure] -> ShowS # |