Closed chessai closed 2 years ago
Type:
strengthen :: forall p p' x. (Predicate p x, Predicate p' x) => Refined p x -> Either RefineException (Refined (p && p') x)
Current implementation:
strengthen = unrefine .> refine
Proposed implementation:
strengthen r = do Refined x <- refine @p' @x (unrefined r) pure (Refined x)
Since p, p' are effectively functions a -> Bool, we needn't check p again.
p, p'
a -> Bool
p
this is now fixed in master
master
Type:
Current implementation:
Proposed implementation:
Since
p, p'
are effectively functionsa -> Bool
, we needn't checkp
again.