| 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 | |