hackage-security-0.6.2.6: Hackage security library
Safe HaskellNone
LanguageHaskell2010

Hackage.Security.Client.Formats

Synopsis

Formats

Type level

Term level

data Format a where Source #

Format is a singleton type (reflection type to term level)

NOTE: In the future we might add further compression formats.

Constructors

FUn :: Format FormatUn 
FGz :: Format FormatGz 

Instances

Instances details
Show (Format f) Source # 
Instance details

Defined in Hackage.Security.Client.Formats

Methods

showsPrec :: Int -> Format f -> ShowS #

show :: Format f -> String #

showList :: [Format f] -> ShowS #

Eq (Format f) Source # 
Instance details

Defined in Hackage.Security.Client.Formats

Methods

(==) :: Format f -> Format f -> Bool #

(/=) :: Format f -> Format f -> Bool #

data Formats a b where Source #

Available formats

Rather than having a general list here, we enumerate all possibilities. This means we are very precise about what we expect, and we avoid any runtime errors about unexpected format definitions.

NOTE: If we add additional cases here (for dealing with additional formats) all calls to error "inaccessible" need to be reevaluated.

Constructors

FsNone :: forall b. Formats () b 
FsUn :: forall b. b -> Formats (FormatUn :- ()) b 
FsGz :: forall b. b -> Formats (FormatGz :- ()) b 
FsUnGz :: forall b. b -> b -> Formats (FormatUn :- (FormatGz :- ())) b 

Instances

Instances details
Functor (Formats fs) Source # 
Instance details

Defined in Hackage.Security.Client.Formats

Methods

fmap :: (a -> b) -> Formats fs a -> Formats fs b #

(<$) :: a -> Formats fs b -> Formats fs a #

Show a => Show (Formats fs a) Source # 
Instance details

Defined in Hackage.Security.Client.Formats

Methods

showsPrec :: Int -> Formats fs a -> ShowS #

show :: Formats fs a -> String #

showList :: [Formats fs a] -> ShowS #

Eq a => Eq (Formats fs a) Source # 
Instance details

Defined in Hackage.Security.Client.Formats

Methods

(==) :: Formats fs a -> Formats fs a -> Bool #

(/=) :: Formats fs a -> Formats fs a -> Bool #

Key membership

data HasFormat a b where Source #

HasFormat fs f is a proof that f is a key in fs.

See formatsMember and formatsLookup for typical usage.

Constructors

HFZ :: forall b fs. Format b -> HasFormat (b :- fs) b 
HFS :: forall fs b f'. HasFormat fs b -> HasFormat (f' :- fs) b 

Instances

Instances details
Show (HasFormat fs f) Source # 
Instance details

Defined in Hackage.Security.Client.Formats

Methods

showsPrec :: Int -> HasFormat fs f -> ShowS #

show :: HasFormat fs f -> String #

showList :: [HasFormat fs f] -> ShowS #

Eq (HasFormat fs f) Source # 
Instance details

Defined in Hackage.Security.Client.Formats

Methods

(==) :: HasFormat fs f -> HasFormat fs f -> Bool #

(/=) :: HasFormat fs f -> HasFormat fs f -> Bool #

Utility

Map-like operations

formatsMap :: (forall f. Format f -> a -> b) -> Formats fs a -> Formats fs b Source #

formatsLookup :: HasFormat fs f -> Formats fs a -> a Source #