Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Module defines CheckedEnc
- untyped ADT version of Enc
A more dependently typed approach would be to define SomeEnc GADT
that accepts some Enc '[..]
in its constructor. The approach here
turns out to be isomorphic to SomeEnc
approach. Both, however, yield
somewhat different programming.
Post v0.4 typed-encoding does not support SomeEnc
and it remains only as an Example.
See Examples.TypedEncoding.SomeEnc.
This module is re-exported in Data.TypedEncoding and it is best not to import it directly.
Synopsis
- data CheckedEnc conf str = UnsafeMkCheckedEnc [EncAnn] conf str
- unsafeCheckedEnc :: [EncAnn] -> c -> s -> CheckedEnc c s
- getCheckedPayload :: CheckedEnc conf str -> str
- getCheckedEncPayload :: CheckedEnc conf str -> ([EncAnn], str)
- toCheckedEnc :: forall xs c str. SymbolList xs => Enc xs c str -> CheckedEnc c str
- fromCheckedEnc :: forall xs c str. SymbolList xs => CheckedEnc c str -> Maybe (Enc xs c str)
- procToCheckedEncFromCheckedEnc :: forall xs c str. (SymbolList xs, Eq c, Eq str) => CheckedEnc c str -> Bool
- procFromCheckedEncToCheckedEnc :: forall xs c str. (SymbolList xs, Eq c, Eq str) => Enc xs c str -> Bool
Documentation
>>>
:set -XOverloadedStrings -XMultiParamTypeClasses -XDataKinds -XAllowAmbiguousTypes
>>>
import qualified Data.Text as T
>>>
import Data.TypedEncoding.Combinators.Unsafe (unsafeSetPayload)
Untyped Enc
data CheckedEnc conf str Source #
Represents some validated encoded string.
CheckedEnc
is untyped version of Enc
.
CheckedEnc
contains verified encoded data, encoding is visible
at the value level only.
Since: 0.2.0.0
UnsafeMkCheckedEnc [EncAnn] conf str | Constructor renamed from previous versions This constructor is considered unsafe as pattern matching on it and using it allows access to the encoded payload. Since: 0.3.0.0 |
Instances
(Eq conf, Eq str) => Eq (CheckedEnc conf str) Source # | |
Defined in Data.TypedEncoding.Common.Types.CheckedEnc (==) :: CheckedEnc conf str -> CheckedEnc conf str -> Bool # (/=) :: CheckedEnc conf str -> CheckedEnc conf str -> Bool # | |
(Show conf, Show str) => Show (CheckedEnc conf str) Source # | |
Defined in Data.TypedEncoding.Common.Types.CheckedEnc showsPrec :: Int -> CheckedEnc conf str -> ShowS # show :: CheckedEnc conf str -> String # showList :: [CheckedEnc conf str] -> ShowS # | |
(Show c, Displ str) => Displ (CheckedEnc c str) Source # |
|
Defined in Data.TypedEncoding.Common.Types.CheckedEnc displ :: CheckedEnc c str -> String Source # |
unsafeCheckedEnc :: [EncAnn] -> c -> s -> CheckedEnc c s Source #
Since: 0.2.0.0
getCheckedPayload :: CheckedEnc conf str -> str Source #
Since: 0.2.0.0
getCheckedEncPayload :: CheckedEnc conf str -> ([EncAnn], str) Source #
Since: 0.2.0.0
toCheckedEnc :: forall xs c str. SymbolList xs => Enc xs c str -> CheckedEnc c str Source #
Since: 0.2.0.0
fromCheckedEnc :: forall xs c str. SymbolList xs => CheckedEnc c str -> Maybe (Enc xs c str) Source #
Since: 0.2.0.0
procToCheckedEncFromCheckedEnc :: forall xs c str. (SymbolList xs, Eq c, Eq str) => CheckedEnc c str -> Bool Source #
>>>
let encsometest = UnsafeMkCheckedEnc ["TEST"] () $ T.pack "hello"
>>>
procToCheckedEncFromCheckedEnc @'["TEST"] encsometest
True>>>
procToCheckedEncFromCheckedEnc @'["TEST1"] encsometest
False
procFromCheckedEncToCheckedEnc :: forall xs c str. (SymbolList xs, Eq c, Eq str) => Enc xs c str -> Bool Source #
>>>
let enctest = unsafeSetPayload () "hello" :: Enc '["TEST"] () T.Text
>>>
procFromCheckedEncToCheckedEnc enctest
True