Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Synopsis
- data CompareLength (op :: RelOp) (n :: Natural)
- validateCompareLength :: forall op n. (KnownNat n, ReifyRelOp op) => Proxy# (CompareLength op n) -> Int -> Maybe (RefineFailure String)
- widenCompareLength :: forall m op n a. WROE op n m => Refined (CompareLength op n) a -> Refined (CompareLength op m) a
- type WROE op n m = WROE' op n m (WidenRelOp op n m)
- type family WROE' (op :: RelOp) (n :: Natural) (m :: Natural) (b :: Bool) where ...
Documentation
data CompareLength (op :: RelOp) (n :: Natural) Source #
Instances
(KnownNat n, Foldable f, ReifyRelOp op) => Refine1 (CompareLength op n :: Type) (f :: Type -> Type) Source # | Compare the length of a |
Defined in Rerefined.Predicate.Relational.Length validate1 :: forall (a :: k1). Proxy# (CompareLength op n) -> f a -> Maybe (RefineFailure String) Source # | |
(Typeable op, KnownNat n) => Predicate (CompareLength op n :: Type) Source # | |
Defined in Rerefined.Predicate.Relational.Length predicateName :: Proxy# (CompareLength op n) -> Int -> ShowS Source # | |
(KnownNat n, MonoFoldable a, ReifyRelOp op) => Refine (CompareLength op n :: Type) a Source # | Compare the length of a |
Defined in Rerefined.Predicate.Relational.Length validate :: Proxy# (CompareLength op n) -> a -> Maybe (RefineFailure String) Source # |
validateCompareLength :: forall op n. (KnownNat n, ReifyRelOp op) => Proxy# (CompareLength op n) -> Int -> Maybe (RefineFailure String) Source #
widenCompareLength :: forall m op n a. WROE op n m => Refined (CompareLength op n) a -> Refined (CompareLength op m) a Source #
Widen a length comparison predicate.
Only valid widenings are permitted, checked at compile time.
Example: Given a >= 1, we know also that a >= 0. Thus, this function allows
you to turn a Refined (CompareLength GTE 1) a
into a Refined
(CompareLength GTE 0) a
.
TODO improve type error here
type WROE op n m = WROE' op n m (WidenRelOp op n m) Source #