Safe Haskell | None |
---|---|
Language | GHC2021 |
Rerefined.Predicate.Relational.Length
Synopsis
- data CompareLength (op :: RelOp) (n :: Natural)
- validateCompareLength :: forall (op :: RelOp) (n :: Nat). (KnownNat n, ReifyRelOp op, KnownPredicateName (CompareLength op n)) => Proxy# (CompareLength op n) -> Int -> Maybe RefineFailure
- widenCompareLength :: forall (m :: Natural) (op :: RelOp) (n :: Natural) a. WROE op n m => Refined (CompareLength op n) a -> Refined (CompareLength op m) a
- widenCompareLength1 :: forall {k1} (m :: Natural) (op :: RelOp) (n :: Natural) (f :: k1 -> Type) (a :: k1). WROE op n m => Refined1 (CompareLength op n) f a -> Refined1 (CompareLength op m) f a
- type WROE (op :: RelOp) (n :: Natural) (m :: Natural) = WROE' op n m (WidenRelOp op n m)
- type family WROE' (op :: k) (n :: Natural) (m :: Natural) (b :: Bool) where ...
Documentation
data CompareLength (op :: RelOp) (n :: Natural) Source #
Instances
validateCompareLength :: forall (op :: RelOp) (n :: Nat). (KnownNat n, ReifyRelOp op, KnownPredicateName (CompareLength op n)) => Proxy# (CompareLength op n) -> Int -> Maybe RefineFailure Source #
widenCompareLength :: forall (m :: Natural) (op :: RelOp) (n :: Natural) 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
widenCompareLength1 :: forall {k1} (m :: Natural) (op :: RelOp) (n :: Natural) (f :: k1 -> Type) (a :: k1). WROE op n m => Refined1 (CompareLength op n) f a -> Refined1 (CompareLength op m) f 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 Refined1 (CompareLength GTE 1) f a
into a Refined1
(CompareLength GTE 0) f a
.
TODO improve type error here