strongweak-0.11.0: Convert between strong and weak representations of types
Safe HaskellNone
LanguageGHC2021

Strongweak.Weaken

Synopsis

Documentation

class Weaken a where Source #

Weaken some a, relaxing certain invariants.

See Strongweak for class design notes and laws.

Associated Types

type Weakened a Source #

The weakened type for some type.

Methods

weaken :: a -> Weakened a Source #

Weaken some a to its associated weak type Weakened a.

Instances

Instances details
Weaken Int16 Source # 
Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened Int16 
Instance details

Defined in Strongweak.Weaken

Weaken Int32 Source # 
Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened Int32 
Instance details

Defined in Strongweak.Weaken

Weaken Int64 Source # 
Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened Int64 
Instance details

Defined in Strongweak.Weaken

Weaken Int8 Source # 
Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened Int8 
Instance details

Defined in Strongweak.Weaken

Weaken Word16 Source # 
Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened Word16 
Instance details

Defined in Strongweak.Weaken

Weaken Word32 Source # 
Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened Word32 
Instance details

Defined in Strongweak.Weaken

Weaken Word64 Source # 
Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened Word64 
Instance details

Defined in Strongweak.Weaken

Weaken Word8 Source # 
Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened Word8 
Instance details

Defined in Strongweak.Weaken

Weaken (Identity a) Source # 
Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened (Identity a) 
Instance details

Defined in Strongweak.Weaken

Weaken (NonEmpty a) Source #

Weaken non-empty lists into plain lists.

Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened (NonEmpty a) 
Instance details

Defined in Strongweak.Weaken

type Weakened (NonEmpty a) = [a]
(Generic (f 'Strong), Generic (f 'Weak), GWeaken (Rep (f 'Strong)) (Rep (f 'Weak))) => Weaken (GenericallySW0 f) Source # 
Instance details

Defined in Strongweak.Generic

Associated Types

type Weakened (GenericallySW0 f) 
Instance details

Defined in Strongweak.Generic

Weaken (SWCoercibly a) Source # 
Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened (SWCoercibly a) 
Instance details

Defined in Strongweak.Weaken

type Weakened (SWCoercibly a) = a
Weaken a => Weaken [a] Source #

Decomposer. Weaken every element in a list.

Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened [a] 
Instance details

Defined in Strongweak.Weaken

type Weakened [a] = [Weakened a]

Methods

weaken :: [a] -> Weakened [a] Source #

(Weaken a, Weaken b) => Weaken (Either a b) Source #

Decomposer. Weaken either side of an Either.

Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened (Either a b) 
Instance details

Defined in Strongweak.Weaken

type Weakened (Either a b) = Either (Weakened a) (Weakened b)

Methods

weaken :: Either a b -> Weakened (Either a b) Source #

(Generic s, Generic w, GWeaken (Rep s) (Rep w)) => Weaken (GenericallySW s w) Source # 
Instance details

Defined in Strongweak.Generic

Associated Types

type Weakened (GenericallySW s w) 
Instance details

Defined in Strongweak.Generic

type Weakened (GenericallySW s w) = w
WeakenWeakenN n a => Weaken (WeakenN n a) Source # 
Instance details

Defined in Strongweak.WeakenN

Associated Types

type Weakened (WeakenN n a) 
Instance details

Defined in Strongweak.WeakenN

type Weakened (WeakenN n a) = WeakenedN n a

Methods

weaken :: WeakenN n a -> Weakened (WeakenN n a) Source #

(Weaken a, Weaken b) => Weaken (a, b) Source #

Decomposer. Weaken both elements of a tuple.

Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened (a, b) 
Instance details

Defined in Strongweak.Weaken

type Weakened (a, b) = (Weakened a, Weakened b)

Methods

weaken :: (a, b) -> Weakened (a, b) Source #

Weaken (Const a b) Source # 
Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened (Const a b) 
Instance details

Defined in Strongweak.Weaken

Methods

weaken :: Const a b -> Weakened (Const a b) Source #

Weaken (Refined p a) Source #

Strip refined type refinement.

Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened (Refined p a) 
Instance details

Defined in Strongweak.Weaken

type Weakened (Refined p a) = a

Methods

weaken :: Refined p a -> Weakened (Refined p a) Source #

Vector v a => Weaken (Vector v n a) Source #

Weaken sized vectors into plain lists.

Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened (Vector v n a) 
Instance details

Defined in Strongweak.Weaken

type Weakened (Vector v n a) = [a]

Methods

weaken :: Vector v n a -> Weakened (Vector v n a) Source #

Weaken (Refined1 p f a) Source #

Strip refined functor type refinement.

Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened (Refined1 p f a) 
Instance details

Defined in Strongweak.Weaken

type Weakened (Refined1 p f a) = f a

Methods

weaken :: Refined1 p f a -> Weakened (Refined1 p f a) Source #

type family WeakenedN (n :: Natural) a where ... Source #

The type of a after weakening n times.

Equations

WeakenedN 0 a = a 
WeakenedN n a = Weakened (WeakenedN (n - 1) a) 

liftWeakF :: Weaken a => (Weakened a -> b) -> a -> b Source #

Lift a function on a weak type to the associated strong type by weakening first.

newtype SWCoercibly a Source #

A "via type" newtype for defining strongweak instances for zero-invariant, coercible newtypes.

Use like so:

deriving via SWCoercibly a instance Weaken (Identity a)

Constructors

SWCoercibly 

Fields

Instances

Instances details
Strengthen (SWCoercibly a) Source # 
Instance details

Defined in Strongweak.Strengthen

UnsafeStrengthen (SWCoercibly a) Source # 
Instance details

Defined in Strongweak.Strengthen.Unsafe

Weaken (SWCoercibly a) Source # 
Instance details

Defined in Strongweak.Weaken

Associated Types

type Weakened (SWCoercibly a) 
Instance details

Defined in Strongweak.Weaken

type Weakened (SWCoercibly a) = a
type Weakened (SWCoercibly a) Source # 
Instance details

Defined in Strongweak.Weaken

type Weakened (SWCoercibly a) = a