Safe Haskell | None |
---|---|
Language | GHC2021 |
Strongweak.WeakenN
Documentation
newtype WeakenN (n :: Natural) a Source #
When weakening (or strengthening), chain the operation n
times.
You may achieve this without extra newtypes by nesting uses of
SW
. However, strongweak generics can't handle this, forcing
you to write manual instances.
WeakenN
provides this nesting behaviour in a type. In return for adding a
boring newtype layer to the strong representation, you can chain weakening and
strengthenings without having to write them manually.
The type works as follows:
Weakened (WeakenN 0 a) = a Weakened (WeakenN 1 a) = Weakened a Weakened (WeakenN 2 a) = Weakened (Weakened a) Weakened (WeakenN n a) = WeakenedN n a
And so on. (This type is only much use from n = 2
onwards.)
Instances
Show a => Show (WeakenN n a) Source # | |
Eq a => Eq (WeakenN n a) Source # | |
Ord a => Ord (WeakenN n a) Source # | |
Defined in Strongweak.WeakenN | |
StrengthenWeakenN n a => Strengthen (WeakenN n a) Source # | |
Defined in Strongweak.WeakenN Methods strengthen :: Weakened (WeakenN n a) -> Either StrengthenFailure' (WeakenN n a) Source # | |
WeakenWeakenN n a => Weaken (WeakenN n a) Source # | |
type Weakened (WeakenN n a) Source # | |
Defined in Strongweak.WeakenN |