strongweak-0.2.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 p, 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

strengthen' :: forall s w. Strengthen w s => w -> Validation (NonEmpty StrengthenError) s Source #

strengthen with reordered type variables for more convenient visible type application.

data StrengthenError Source #

Strengthen error data type. Don't use these constructors directly, use the existing helper functions.

Field indices are from 0 in the respective constructor. Field names are provided if present.

Constructors

StrengthenErrorBase 

Fields

StrengthenErrorField 

Fields