module Common.RefinedUtils
( RNonNegative,
RPositive,
unsafeNonNeg,
unsafePos,
unsafeRef,
module Refined,
)
where
import qualified Control.Exception as Ex
import qualified Data.Either as E
import Refined
type RNonNegative a = Refined NonNegative a
type RPositive a = Refined Positive a
unsafeNonNeg :: (Num x, Ord x) => x -> Refined NonNegative x
unsafeNonNeg :: x -> Refined NonNegative x
unsafeNonNeg = x -> Refined NonNegative x
forall p x. Predicate p x => x -> Refined p x
unsafeRef
unsafePos :: (Num x, Ord x) => x -> Refined Positive x
unsafePos :: x -> Refined Positive x
unsafePos = x -> Refined Positive x
forall p x. Predicate p x => x -> Refined p x
unsafeRef
unsafeRef :: Predicate p x => x -> Refined p x
unsafeRef :: x -> Refined p x
unsafeRef = (RefineException -> Refined p x)
-> (Refined p x -> Refined p x)
-> Either RefineException (Refined p x)
-> Refined p x
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
E.either RefineException -> Refined p x
forall a e. Exception e => e -> a
Ex.throw Refined p x -> Refined p x
forall a. a -> a
id (Either RefineException (Refined p x) -> Refined p x)
-> (x -> Either RefineException (Refined p x)) -> x -> Refined p x
forall b c a. (b -> c) -> (a -> b) -> a -> c
. x -> Either RefineException (Refined p x)
forall p x.
Predicate p x =>
x -> Either RefineException (Refined p x)
refine