| Safe Haskell | None | 
|---|---|
| Language | Haskell2010 | 
Hackage.Security.Client.Formats
Synopsis
- data FormatUn
 - data FormatGz
 - data Format :: * -> * where
 - data Formats :: * -> * -> * where
 - data HasFormat :: * -> * -> * where
 - hasFormatAbsurd :: HasFormat () f -> a
 - hasFormatGet :: HasFormat fs f -> Format f
 - formatsMap :: (forall f. Format f -> a -> b) -> Formats fs a -> Formats fs b
 - formatsMember :: Format f -> Formats fs a -> Maybe (HasFormat fs f)
 - formatsLookup :: HasFormat fs f -> Formats fs a -> a
 
Formats
Type level
Term level
data Format :: * -> * where Source #
Format is a singleton type (reflection type to term level)
NOTE: In the future we might add further compression formats.
data Formats :: * -> * -> * 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 unexpect 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 :: Formats () a | |
| FsUn :: a -> Formats (FormatUn :- ()) a | |
| FsGz :: a -> Formats (FormatGz :- ()) a | |
| FsUnGz :: a -> a -> Formats (FormatUn :- (FormatGz :- ())) a | 
Key membership
data HasFormat :: * -> * -> * where Source #
HasFormat fs f is a proof that f is a key in fs.
See formatsMember and formatsLookup for typical usage.
Constructors
| HFZ :: Format f -> HasFormat (f :- fs) f | |
| HFS :: HasFormat fs f -> HasFormat (f' :- fs) f | 
Utility
hasFormatAbsurd :: HasFormat () f -> a Source #
hasFormatGet :: HasFormat fs f -> Format f Source #
Map-like operations
formatsLookup :: HasFormat fs f -> Formats fs a -> a Source #