strongweak-0.1.0: Convert between strong and weak representations of types
Safe HaskellSafe-Inferred
LanguageHaskell2010

Strongweak.Strengthen

Synopsis

Documentation

class Strengthen w s | s -> w where Source #

Any w can be "strengthened" into an s by asserting some properties.

For example, you may strengthen some Natural n into a Word8 by asserting 0 <= n <= 255.

Note that we restrict strengthened types to having only one corresponding weak representation using functional dependencies.

Instances

Instances details
Strengthen Integer Int16 Source # 
Instance details

Defined in Strongweak.Strengthen

Strengthen Integer Int32 Source # 
Instance details

Defined in Strongweak.Strengthen

Strengthen Integer Int64 Source # 
Instance details

Defined in Strongweak.Strengthen

Strengthen Integer Int8 Source # 
Instance details

Defined in Strongweak.Strengthen

Strengthen Natural Word16 Source # 
Instance details

Defined in Strongweak.Strengthen

Strengthen Natural Word32 Source # 
Instance details

Defined in Strongweak.Strengthen

Strengthen Natural Word64 Source # 
Instance details

Defined in Strongweak.Strengthen

Strengthen Natural Word8 Source # 
Instance details

Defined in Strongweak.Strengthen

(Predicate p a, Typeable a, Show a) => Strengthen a (Refined p a) Source #

Obtain a refined type by applying its associated refinement.

Instance details

Defined in Strongweak.Strengthen

Strengthen (Ex1D 'Weak) (Ex1D 'Strong) Source # 
Instance details

Defined in Strongweak.Example

Strengthen (Ex2D 'Weak) (Ex2D 'Strong) Source # 
Instance details

Defined in Strongweak.Example

Strengthen (ExUnit 'Weak) (ExUnit 'Strong) Source # 
Instance details

Defined in Strongweak.Example

Strengthen (ExVoid 'Weak) (ExVoid 'Strong) Source # 
Instance details

Defined in Strongweak.Example

Strengthen w s => Strengthen [w] [s] Source #

Strengthen each element of a list.

Instance details

Defined in Strongweak.Strengthen

(KnownNat n, Typeable a, Show a) => Strengthen [a] (Vector n a) Source #

Obtain a sized vector by asserting the size of a plain list.

Instance details

Defined in Strongweak.Strengthen

data StrengthenError Source #

Constructors

StrengthenErrorBase String String String String

weak type, strong type, weak value, msg

StrengthenErrorField String String String String String String StrengthenError

weak datatype name, strong datatype name, weak constructor name, strong constructor name, weak field name, strong field name, error

Instances

Instances details
Show StrengthenError Source # 
Instance details

Defined in Strongweak.Strengthen

Pretty StrengthenError Source # 
Instance details

Defined in Strongweak.Strengthen