| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Dhall.Marshal.Decode
Description
Please read the Dhall.Tutorial module, which contains a tutorial explaining how to use the language, the compiler, and this library
Synopsis
- data Decoder a = Decoder {}
- class FromDhall a where
- autoWith :: InputNormalizer -> Decoder a
- type Interpret = FromDhall
- auto :: FromDhall a => Decoder a
- bool :: Decoder Bool
- unit :: Decoder ()
- void :: Decoder Void
- natural :: Decoder Natural
- word :: Decoder Word
- word8 :: Decoder Word8
- word16 :: Decoder Word16
- word32 :: Decoder Word32
- word64 :: Decoder Word64
- integer :: Decoder Integer
- int :: Decoder Int
- int8 :: Decoder Int8
- int16 :: Decoder Int16
- int32 :: Decoder Int32
- int64 :: Decoder Int64
- scientific :: Decoder Scientific
- double :: Decoder Double
- lazyBytes :: Decoder ByteString
- strictBytes :: Decoder ByteString
- shortBytes :: Decoder ShortByteString
- string :: Decoder String
- lazyText :: Decoder Text
- strictText :: Decoder Text
- shortText :: Decoder ShortText
- timeOfDay :: Decoder TimeOfDay
- day :: Decoder Day
- timeZone :: Decoder TimeZone
- localTime :: Decoder LocalTime
- zonedTime :: Decoder ZonedTime
- utcTime :: Decoder UTCTime
- dayOfWeek :: Decoder DayOfWeek
- maybe :: Decoder a -> Decoder (Maybe a)
- pair :: Decoder a -> Decoder b -> Decoder (a, b)
- sequence :: Decoder a -> Decoder (Seq a)
- list :: Decoder a -> Decoder [a]
- vector :: Decoder a -> Decoder (Vector a)
- setFromDistinctList :: (Ord a, Show a) => Decoder a -> Decoder (Set a)
- setIgnoringDuplicates :: Ord a => Decoder a -> Decoder (Set a)
- hashSetFromDistinctList :: (Hashable a, Ord a, Show a) => Decoder a -> Decoder (HashSet a)
- hashSetIgnoringDuplicates :: (Hashable a, Ord a) => Decoder a -> Decoder (HashSet a)
- map :: Ord k => Decoder k -> Decoder v -> Decoder (Map k v)
- hashMap :: (Eq k, Hashable k) => Decoder k -> Decoder v -> Decoder (HashMap k v)
- pairFromMapEntry :: Decoder k -> Decoder v -> Decoder (k, v)
- function :: Encoder a -> Decoder b -> Decoder (a -> b)
- functionWith :: InputNormalizer -> Encoder a -> Decoder b -> Decoder (a -> b)
- newtype RecordDecoder a = RecordDecoder (Product (Const (Map Text (Expector (Expr Src Void)))) (Compose ((->) (Expr Src Void)) (Extractor Src Void)) a)
- record :: RecordDecoder a -> Decoder a
- field :: Text -> Decoder a -> RecordDecoder a
- newtype UnionDecoder a = UnionDecoder (Compose (Map Text) Decoder a)
- union :: UnionDecoder a -> Decoder a
- constructor :: Text -> Decoder a -> UnionDecoder a
- class GenericFromDhall t f where
- genericAutoWithNormalizer :: Proxy t -> InputNormalizer -> InterpretOptions -> State Int (Decoder (f a))
- class GenericFromDhallUnion t f where
- genericUnionAutoWithNormalizer :: Proxy t -> InputNormalizer -> InterpretOptions -> UnionDecoder (f a)
- genericAuto :: (Generic a, GenericFromDhall a (Rep a)) => Decoder a
- genericAutoWith :: (Generic a, GenericFromDhall a (Rep a)) => InterpretOptions -> Decoder a
- genericAutoWithInputNormalizer :: (Generic a, GenericFromDhall a (Rep a)) => InterpretOptions -> InputNormalizer -> Decoder a
- newtype DhallErrors e = DhallErrors {}
- showDhallErrors :: Show e => String -> DhallErrors e -> String
- data InvalidDecoder s a = InvalidDecoder {
- invalidDecoderExpected :: Expr s a
- invalidDecoderExpression :: Expr s a
- type ExtractErrors s a = DhallErrors (ExtractError s a)
- data ExtractError s a
- type Extractor s a = Validation (ExtractErrors s a)
- typeError :: Expector (Expr s a) -> Expr s a -> Extractor s a b
- extractError :: Text -> Extractor s a b
- type MonadicExtractor s a = Either (ExtractErrors s a)
- toMonadic :: Extractor s a b -> MonadicExtractor s a b
- fromMonadic :: MonadicExtractor s a b -> Extractor s a b
- type ExpectedTypeErrors = DhallErrors ExpectedTypeError
- data ExpectedTypeError = RecursiveTypeError
- type Expector = Validation ExpectedTypeErrors
- newtype InputNormalizer = InputNormalizer {}
- defaultInputNormalizer :: InputNormalizer
- data InterpretOptions = InterpretOptions {}
- data SingletonConstructors
- defaultInterpretOptions :: InterpretOptions
- data Result f
- data Natural
- data Seq a
- data Text
- data Vector a
- class Generic a
General
A (Decoder a) represents a way to marshal a value of type 'a' from Dhall
into Haskell.
You can produce Decoders either explicitly:
example :: Decoder (Vector Text) example = vector text
... or implicitly using auto:
example :: Decoder (Vector Text) example = auto
You can consume Decoders using the input function:
input :: Decoder a -> Text -> IO a
Constructors
| Decoder | |
class FromDhall a where Source #
Any value that implements FromDhall can be automatically decoded based on
the inferred return type of input.
>>>input auto "[1, 2, 3]" :: IO (Vector Natural)[1,2,3]>>>input auto "toMap { a = False, b = True }" :: IO (Map Text Bool)fromList [("a",False),("b",True)]
This class auto-generates a default implementation for types that
implement Generic. This does not auto-generate an instance for recursive
types.
The default instance can be tweaked using genericAutoWith/genericAutoWithInputNormalizer
and custom InterpretOptions, or using
DerivingVia
and Codec from Dhall.Deriving.
Minimal complete definition
Nothing
Methods
autoWith :: InputNormalizer -> Decoder a Source #
default autoWith :: (Generic a, GenericFromDhall a (Rep a)) => InputNormalizer -> Decoder a Source #
Instances
| FromDhall Void Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall Int16 Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall Int32 Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall Int64 Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall Int8 Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall Word16 Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall Word32 Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall Word64 Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall Word8 Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall CGid Source # | |
Defined in Dhall.DirectoryTree.Types | |
| FromDhall CUid Source # | |
Defined in Dhall.DirectoryTree.Types | |
| FromDhall ByteString Source # | |
Defined in Dhall.Marshal.Decode Methods | |
| FromDhall ByteString Source # | |
Defined in Dhall.Marshal.Decode Methods | |
| FromDhall ShortByteString Source # | |
Defined in Dhall.Marshal.Decode Methods autoWith :: InputNormalizer -> Decoder ShortByteString Source # | |
| FromDhall FilesystemEntry Source # | |
Defined in Dhall.DirectoryTree.Types Methods autoWith :: InputNormalizer -> Decoder FilesystemEntry Source # | |
| FromDhall Group Source # | |
Defined in Dhall.DirectoryTree.Types | |
| FromDhall User Source # | |
Defined in Dhall.DirectoryTree.Types | |
| FromDhall Scientific Source # | |
Defined in Dhall.Marshal.Decode Methods | |
| FromDhall Text Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall Text Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall ShortText Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall Day Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall DayOfWeek Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall UTCTime Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall LocalTime Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall TimeOfDay Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall TimeZone Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall ZonedTime Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall Integer Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall Natural Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall () Source # | |
Defined in Dhall.Marshal.Decode Methods autoWith :: InputNormalizer -> Decoder () Source # | |
| FromDhall Bool Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall Double Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall Int Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall Word Source # | |
Defined in Dhall.Marshal.Decode | |
| ToDhall x => FromDhall (Equivalence x) Source # | |
Defined in Dhall.Marshal.Decode Methods autoWith :: InputNormalizer -> Decoder (Equivalence x) Source # | |
| ToDhall x => FromDhall (Predicate x) Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall a => FromDhall (Identity a) Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall a => FromDhall (Seq a) Source # | |
Defined in Dhall.Marshal.Decode | |
| (FromDhall a, Ord a, Show a) => FromDhall (Set a) Source # | Note that this instance will throw errors in the presence of duplicates in
the list. To ignore duplicates, use |
Defined in Dhall.Marshal.Decode | |
| (Functor f, FromDhall (f (Result f))) => FromDhall (Fix f) Source # | You can use this instance to marshal recursive types from Dhall to Haskell. Here is an example use of this instance: {-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveFoldable #-}
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE DeriveTraversable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TemplateHaskell #-}
import Data.Fix (Fix(..))
import Data.Text (Text)
import Dhall (FromDhall)
import GHC.Generics (Generic)
import Numeric.Natural (Natural)
import qualified Data.Fix as Fix
import qualified Data.Functor.Foldable as Foldable
import qualified Data.Functor.Foldable.TH as TH
import qualified Dhall
import qualified NeatInterpolation
data Expr
= Lit Natural
| Add Expr Expr
| Mul Expr Expr
deriving (Show)
TH.makeBaseFunctor ''Expr
deriving instance Generic (ExprF a)
deriving instance FromDhall a => FromDhall (ExprF a)
example :: Text
example = [NeatInterpolation.text|
\(Expr : Type)
-> let ExprF =
< LitF :
Natural
| AddF :
{ _1 : Expr, _2 : Expr }
| MulF :
{ _1 : Expr, _2 : Expr }
>
in \(Fix : ExprF -> Expr)
-> let Lit = \(x : Natural) -> Fix (ExprF.LitF x)
let Add =
\(x : Expr)
-> \(y : Expr)
-> Fix (ExprF.AddF { _1 = x, _2 = y })
let Mul =
\(x : Expr)
-> \(y : Expr)
-> Fix (ExprF.MulF { _1 = x, _2 = y })
in Add (Mul (Lit 3) (Lit 7)) (Add (Lit 1) (Lit 2))
|]
convert :: Fix ExprF -> Expr
convert = Fix.foldFix Foldable.embed
main :: IO ()
main = do
x <- Dhall.input Dhall.auto example :: IO (Fix ExprF)
print (convert x :: Expr) |
Defined in Dhall.Marshal.Decode | |
| FromDhall (Access Identity) Source # | |
Defined in Dhall.DirectoryTree.Types | |
| FromDhall (Access Maybe) Source # | |
Defined in Dhall.DirectoryTree.Types | |
| FromDhall a => FromDhall (Entry a) Source # | |
Defined in Dhall.DirectoryTree.Types | |
| FromDhall (Mode Identity) Source # | |
Defined in Dhall.DirectoryTree.Types | |
| FromDhall (Mode Maybe) Source # | |
Defined in Dhall.DirectoryTree.Types | |
| FromDhall (f (Result f)) => FromDhall (Result f) Source # | |
Defined in Dhall.Marshal.Decode | |
| (FromDhall a, Hashable a, Ord a, Show a) => FromDhall (HashSet a) Source # | Note that this instance will throw errors in the presence of duplicates in
the list. To ignore duplicates, use |
Defined in Dhall.Marshal.Decode | |
| FromDhall a => FromDhall (Vector a) Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall a => FromDhall (Maybe a) Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall [Char] Source # | |
Defined in Dhall.Marshal.Decode | |
| FromDhall a => FromDhall [a] Source # | |
Defined in Dhall.Marshal.Decode Methods autoWith :: InputNormalizer -> Decoder [a] Source # | |
| (FromDhall b, ToDhall x) => FromDhall (Op b x) Source # | |
Defined in Dhall.Marshal.Decode | |
| (Ord k, FromDhall k, FromDhall v) => FromDhall (Map k v) Source # | |
Defined in Dhall.Marshal.Decode | |
| (Eq k, Hashable k, FromDhall k, FromDhall v) => FromDhall (HashMap k v) Source # | |
Defined in Dhall.Marshal.Decode | |
| (ToDhall a, FromDhall b) => FromDhall (a -> b) Source # | |
Defined in Dhall.Marshal.Decode Methods autoWith :: InputNormalizer -> Decoder (a -> b) Source # | |
| (FromDhall a, FromDhall b) => FromDhall (a, b) Source # | |
Defined in Dhall.Marshal.Decode Methods autoWith :: InputNormalizer -> Decoder (a, b) Source # | |
| (Generic a, GenericFromDhall a (Rep a), ModifyOptions tag) => FromDhall (Codec tag a) Source # | |
Defined in Dhall.Deriving | |
type Interpret = FromDhall Source #
Deprecated: Use FromDhall instead
A compatibility alias for FromDhall.
auto :: FromDhall a => Decoder a Source #
Use the default input normalizer for interpreting an input.
auto = autoWith defaultInputNormalizer
Building decoders
Simple decoders
Decode () from an empty record.
>>>input unit "{=}" -- GHC doesn't print the result if it is ()
Numbers
scientific :: Decoder Scientific Source #
Decode a Scientific.
>>>input scientific "1e100"1.0e100
Bytes
lazyBytes :: Decoder ByteString Source #
Decode a lazy ByteString.
>>>input lazyBytes "0x\"00FF\"""\NUL\255"
strictBytes :: Decoder ByteString Source #
Decode a strict ByteString
>>>input strictBytes "0x\"00FF\"""\NUL\255"
shortBytes :: Decoder ShortByteString Source #
Decode a ShortByteString
>>>input shortBytes "0x\"00FF\"""\NUL\255"
Textual
Time
localTime :: Decoder LocalTime Source #
Decode LocalTime
>>>input localTime "2020-01-01T12:34:56"2020-01-01 12:34:56
zonedTime :: Decoder ZonedTime Source #
Decode ZonedTime
>>>input zonedTime "2020-01-01T12:34:56+02:00"2020-01-01 12:34:56 +0200
utcTime :: Decoder UTCTime Source #
Decode UTCTime
>>>input utcTime "2020-01-01T12:34:56+02:00"2020-01-01 10:34:56 UTC
dayOfWeek :: Decoder DayOfWeek Source #
Decode DayOfWeek
>>>input dayOfWeek "< Sunday | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday >.Monday"Monday
Containers
maybe :: Decoder a -> Decoder (Maybe a) Source #
Decode a Maybe.
>>>input (maybe natural) "Some 1"Just 1
pair :: Decoder a -> Decoder b -> Decoder (a, b) Source #
Given a pair of Decoders, decode a tuple-record into their pairing.
>>>input (pair natural bool) "{ _1 = 42, _2 = False }"(42,False)
sequence :: Decoder a -> Decoder (Seq a) Source #
Decode a Seq.
>>>input (sequence natural) "[1, 2, 3]"fromList [1,2,3]
vector :: Decoder a -> Decoder (Vector a) Source #
Decode a Vector.
>>>input (vector natural) "[1, 2, 3]"[1,2,3]
setFromDistinctList :: (Ord a, Show a) => Decoder a -> Decoder (Set a) Source #
Decode a Set from a List with distinct elements.
>>>input (setFromDistinctList natural) "[1, 2, 3]"fromList [1,2,3]
An error is thrown if the list contains duplicates.
>>> input (setFromDistinctList natural) "[1, 1, 3]" *** Exception: Error: Failed extraction The expression type-checked successfully but the transformation to the target type failed with the following error: One duplicate element in the list: 1
>>> input (setFromDistinctList natural) "[1, 1, 3, 3]" *** Exception: Error: Failed extraction The expression type-checked successfully but the transformation to the target type failed with the following error: 2 duplicates were found in the list, including 1
hashSetFromDistinctList :: (Hashable a, Ord a, Show a) => Decoder a -> Decoder (HashSet a) Source #
Decode a HashSet from a List with distinct elements.
>>>input (hashSetFromDistinctList natural) "[1, 2, 3]"fromList [1,2,3]
An error is thrown if the list contains duplicates.
>>> input (hashSetFromDistinctList natural) "[1, 1, 3]" *** Exception: Error: Failed extraction The expression type-checked successfully but the transformation to the target type failed with the following error: One duplicate element in the list: 1
>>> input (hashSetFromDistinctList natural) "[1, 1, 3, 3]" *** Exception: Error: Failed extraction The expression type-checked successfully but the transformation to the target type failed with the following error: 2 duplicates were found in the list, including 1
map :: Ord k => Decoder k -> Decoder v -> Decoder (Map k v) Source #
Decode a Map from a toMap expression or generally a Prelude.Map.Type.
>>>input (Dhall.map strictText bool) "toMap { a = True, b = False }"fromList [("a",True),("b",False)]>>>input (Dhall.map strictText bool) "[ { mapKey = \"foo\", mapValue = True } ]"fromList [("foo",True)]
If there are duplicate mapKeys, later mapValues take precedence:
>>>let expr = "[ { mapKey = 1, mapValue = True }, { mapKey = 1, mapValue = False } ]">>>input (Dhall.map natural bool) exprfromList [(1,False)]
hashMap :: (Eq k, Hashable k) => Decoder k -> Decoder v -> Decoder (HashMap k v) Source #
Decode a HashMap from a toMap expression or generally a Prelude.Map.Type.
>>>fmap (List.sort . HashMap.toList) (input (Dhall.hashMap strictText bool) "toMap { a = True, b = False }")[("a",True),("b",False)]>>>fmap (List.sort . HashMap.toList) (input (Dhall.hashMap strictText bool) "[ { mapKey = \"foo\", mapValue = True } ]")[("foo",True)]
If there are duplicate mapKeys, later mapValues take precedence:
>>>let expr = "[ { mapKey = 1, mapValue = True }, { mapKey = 1, mapValue = False } ]">>>input (Dhall.hashMap natural bool) exprfromList [(1,False)]
pairFromMapEntry :: Decoder k -> Decoder v -> Decoder (k, v) Source #
Decode a tuple from a Prelude.Map.Entry record.
>>>input (pairFromMapEntry strictText natural) "{ mapKey = \"foo\", mapValue = 3 }"("foo",3)
Functions
function :: Encoder a -> Decoder b -> Decoder (a -> b) Source #
Decode a Dhall function into a Haskell function.
>>>f <- input (function inject bool) "Natural/even" :: IO (Natural -> Bool)>>>f 0True>>>f 1False
functionWith :: InputNormalizer -> Encoder a -> Decoder b -> Decoder (a -> b) Source #
Decode a Dhall function into a Haskell function using the specified normalizer.
>>>f <- input (functionWith defaultInputNormalizer inject bool) "Natural/even" :: IO (Natural -> Bool)>>>f 0True>>>f 1False
Records
newtype RecordDecoder a Source #
The RecordDecoder applicative functor allows you to build a Decoder
from a Dhall record.
For example, let's take the following Haskell data type:
>>>:{data Project = Project { projectName :: Text , projectDescription :: Text , projectStars :: Natural } :}
And assume that we have the following Dhall record that we would like to
parse as a Project:
{ name =
"dhall-haskell"
, description =
"A configuration language guaranteed to terminate"
, stars =
289
}Our decoder has type Decoder Project, but we can't build that out of any
smaller decoders, as Decoders cannot be combined (they are only Functors).
However, we can use a RecordDecoder to build a Decoder for Project:
>>>:{project :: Decoder Project project = record ( Project <$> field "name" strictText <*> field "description" strictText <*> field "stars" natural ) :}
Constructors
| RecordDecoder (Product (Const (Map Text (Expector (Expr Src Void)))) (Compose ((->) (Expr Src Void)) (Extractor Src Void)) a) |
Instances
| Applicative RecordDecoder Source # | |
Defined in Dhall.Marshal.Decode Methods pure :: a -> RecordDecoder a # (<*>) :: RecordDecoder (a -> b) -> RecordDecoder a -> RecordDecoder b # liftA2 :: (a -> b -> c) -> RecordDecoder a -> RecordDecoder b -> RecordDecoder c # (*>) :: RecordDecoder a -> RecordDecoder b -> RecordDecoder b # (<*) :: RecordDecoder a -> RecordDecoder b -> RecordDecoder a # | |
| Functor RecordDecoder Source # | |
Defined in Dhall.Marshal.Decode Methods fmap :: (a -> b) -> RecordDecoder a -> RecordDecoder b # (<$) :: a -> RecordDecoder b -> RecordDecoder a # | |
record :: RecordDecoder a -> Decoder a Source #
Run a RecordDecoder to build a Decoder.
Unions
newtype UnionDecoder a Source #
The UnionDecoder monoid allows you to build a Decoder from a Dhall union.
For example, let's take the following Haskell data type:
>>>:{data Status = Queued Natural | Result Text | Errored Text :}
And assume that we have the following Dhall union that we would like to
parse as a Status:
< Result : Text | Queued : Natural | Errored : Text >.Result "Finish successfully"
Our decoder has type Decoder Status, but we can't build that out of any
smaller decoders, as Decoders cannot be combined (they are only Functors).
However, we can use a UnionDecoder to build a Decoder for Status:
>>>:{status :: Decoder Status status = union ( ( Queued <$> constructor "Queued" natural ) <> ( Result <$> constructor "Result" strictText ) <> ( Errored <$> constructor "Errored" strictText ) ) :}
Constructors
| UnionDecoder (Compose (Map Text) Decoder a) |
Instances
| Functor UnionDecoder Source # | |
Defined in Dhall.Marshal.Decode Methods fmap :: (a -> b) -> UnionDecoder a -> UnionDecoder b # (<$) :: a -> UnionDecoder b -> UnionDecoder a # | |
| Monoid (UnionDecoder a) Source # | |
Defined in Dhall.Marshal.Decode Methods mempty :: UnionDecoder a # mappend :: UnionDecoder a -> UnionDecoder a -> UnionDecoder a # mconcat :: [UnionDecoder a] -> UnionDecoder a # | |
| Semigroup (UnionDecoder a) Source # | |
Defined in Dhall.Marshal.Decode Methods (<>) :: UnionDecoder a -> UnionDecoder a -> UnionDecoder a # sconcat :: NonEmpty (UnionDecoder a) -> UnionDecoder a # stimes :: Integral b => b -> UnionDecoder a -> UnionDecoder a # | |
union :: UnionDecoder a -> Decoder a Source #
Run a UnionDecoder to build a Decoder.
constructor :: Text -> Decoder a -> UnionDecoder a Source #
Parse a single constructor of a union.
Generic decoding
class GenericFromDhall t f where Source #
This is the underlying class that powers the FromDhall class's support
for automatically deriving a generic implementation.
Methods
genericAutoWithNormalizer :: Proxy t -> InputNormalizer -> InterpretOptions -> State Int (Decoder (f a)) Source #
Instances
class GenericFromDhallUnion t f where Source #
This is the underlying class that powers the FromDhall class's support
for automatically deriving a generic implementation for a union type.
Methods
genericUnionAutoWithNormalizer :: Proxy t -> InputNormalizer -> InterpretOptions -> UnionDecoder (f a) Source #
Instances
| (GenericFromDhallUnion t f1, GenericFromDhallUnion t f2) => GenericFromDhallUnion (t :: k1) (f1 :+: f2 :: k2 -> Type) Source # | |
Defined in Dhall.Marshal.Decode Methods genericUnionAutoWithNormalizer :: forall (a :: k10). Proxy t -> InputNormalizer -> InterpretOptions -> UnionDecoder ((f1 :+: f2) a) Source # | |
| (Constructor c1, GenericFromDhall t f1) => GenericFromDhallUnion (t :: k1) (M1 C c1 f1 :: k2 -> Type) Source # | |
Defined in Dhall.Marshal.Decode Methods genericUnionAutoWithNormalizer :: forall (a :: k10). Proxy t -> InputNormalizer -> InterpretOptions -> UnionDecoder (M1 C c1 f1 a) Source # | |
genericAuto :: (Generic a, GenericFromDhall a (Rep a)) => Decoder a Source #
genericAuto is the default implementation for auto if you derive
FromDhall. The difference is that you can use genericAuto without
having to explicitly provide a FromDhall instance for a type as long as
the type derives Generic.
genericAutoWith :: (Generic a, GenericFromDhall a (Rep a)) => InterpretOptions -> Decoder a Source #
genericAutoWith is a configurable version of genericAuto.
genericAutoWithInputNormalizer :: (Generic a, GenericFromDhall a (Rep a)) => InterpretOptions -> InputNormalizer -> Decoder a Source #
genericAutoWithInputNormalizer is like genericAutoWith, but instead of
using the defaultInputNormalizer it expects an custom InputNormalizer.
Decoding errors
newtype DhallErrors e Source #
A newtype suitable for collecting one or more errors.
Constructors
| DhallErrors | |
Instances
showDhallErrors :: Show e => String -> DhallErrors e -> String Source #
Render a given prefix and some errors to a string.
data InvalidDecoder s a Source #
Every Decoder must obey the contract that if an expression's type matches
the expected type then the extract function must not fail with a type
error. However, decoding may still fail for other reasons (such as the
decoder for Sets rejecting a Dhall List with duplicate
elements).
This error type is used to indicate an internal error in the implementation
of a Decoder where the expected type matched the Dhall expression, but the
expression supplied to the extraction function did not match the expected
type. If this happens that means that the Decoder itself needs to be
fixed.
Constructors
| InvalidDecoder | |
Fields
| |
Instances
| (Pretty s, Typeable s, Pretty a, Typeable a) => Exception (InvalidDecoder s a) Source # | |
Defined in Dhall.Marshal.Decode Methods toException :: InvalidDecoder s a -> SomeException # fromException :: SomeException -> Maybe (InvalidDecoder s a) # displayException :: InvalidDecoder s a -> String # | |
| (Pretty s, Pretty a, Typeable s, Typeable a) => Show (InvalidDecoder s a) Source # | |
Defined in Dhall.Marshal.Decode Methods showsPrec :: Int -> InvalidDecoder s a -> ShowS # show :: InvalidDecoder s a -> String # showList :: [InvalidDecoder s a] -> ShowS # | |
| (Eq s, Eq a) => Eq (InvalidDecoder s a) Source # | |
Defined in Dhall.Marshal.Decode Methods (==) :: InvalidDecoder s a -> InvalidDecoder s a -> Bool # (/=) :: InvalidDecoder s a -> InvalidDecoder s a -> Bool # | |
Extraction errors
type ExtractErrors s a = DhallErrors (ExtractError s a) Source #
One or more errors returned from extracting a Dhall expression to a Haskell expression.
data ExtractError s a Source #
Extraction of a value can fail for two reasons, either a type mismatch (which should not happen,
as expressions are type-checked against the expected type before being passed to extract), or
a term-level error, described with a freeform text value.
Constructors
| TypeMismatch (InvalidDecoder s a) | |
| ExpectedTypeError ExpectedTypeError | |
| ExtractError Text |
Instances
| (Pretty s, Pretty a, Typeable s, Typeable a) => Exception (ExtractError s a) Source # | |
Defined in Dhall.Marshal.Decode Methods toException :: ExtractError s a -> SomeException # fromException :: SomeException -> Maybe (ExtractError s a) # displayException :: ExtractError s a -> String # | |
| (Pretty s, Pretty a, Typeable s, Typeable a) => Show (ExtractError s a) Source # | |
Defined in Dhall.Marshal.Decode Methods showsPrec :: Int -> ExtractError s a -> ShowS # show :: ExtractError s a -> String # showList :: [ExtractError s a] -> ShowS # | |
| (Pretty s, Pretty a, Typeable s, Typeable a) => Show (ExtractErrors s a) Source # | |
Defined in Dhall.Marshal.Decode Methods showsPrec :: Int -> ExtractErrors s a -> ShowS # show :: ExtractErrors s a -> String # showList :: [ExtractErrors s a] -> ShowS # | |
| (Eq s, Eq a) => Eq (ExtractError s a) Source # | |
Defined in Dhall.Marshal.Decode Methods (==) :: ExtractError s a -> ExtractError s a -> Bool # (/=) :: ExtractError s a -> ExtractError s a -> Bool # | |
type Extractor s a = Validation (ExtractErrors s a) Source #
Useful synonym for the Validation type used when marshalling Dhall
expressions.
typeError :: Expector (Expr s a) -> Expr s a -> Extractor s a b Source #
Generate a type error during extraction by specifying the expected type and the actual type. The expected type is not yet determined.
type MonadicExtractor s a = Either (ExtractErrors s a) Source #
Useful synonym for the equivalent Either type used when marshalling Dhall
code.
toMonadic :: Extractor s a b -> MonadicExtractor s a b Source #
Switches from an Applicative extraction result, able to accumulate errors,
to a Monad extraction result, able to chain sequential operations.
fromMonadic :: MonadicExtractor s a b -> Extractor s a b Source #
Switches from a Monad extraction result, able to chain sequential errors,
to an Applicative extraction result, able to accumulate errors.
Typing errors
type ExpectedTypeErrors = DhallErrors ExpectedTypeError Source #
One or more errors returned when determining the Dhall type of a Haskell expression.
data ExpectedTypeError Source #
Error type used when determining the Dhall type of a Haskell expression.
Constructors
| RecursiveTypeError |
Instances
| Exception ExpectedTypeError Source # | |
Defined in Dhall.Marshal.Decode Methods toException :: ExpectedTypeError -> SomeException # | |
| Show ExpectedTypeError Source # | |
Defined in Dhall.Marshal.Decode Methods showsPrec :: Int -> ExpectedTypeError -> ShowS # show :: ExpectedTypeError -> String # showList :: [ExpectedTypeError] -> ShowS # | |
| Show ExpectedTypeErrors Source # | |
Defined in Dhall.Marshal.Decode Methods showsPrec :: Int -> ExpectedTypeErrors -> ShowS # show :: ExpectedTypeErrors -> String # showList :: [ExpectedTypeErrors] -> ShowS # | |
| Eq ExpectedTypeError Source # | |
Defined in Dhall.Marshal.Decode Methods (==) :: ExpectedTypeError -> ExpectedTypeError -> Bool # (/=) :: ExpectedTypeError -> ExpectedTypeError -> Bool # | |
type Expector = Validation ExpectedTypeErrors Source #
Useful synonym for the Validation type used when marshalling Dhall
expressions.
Miscellaneous
newtype InputNormalizer Source #
This is only used by the FromDhall instance for
functions in order to normalize the function input before marshaling the
input into a Dhall expression.
Constructors
| InputNormalizer | |
Fields | |
defaultInputNormalizer :: InputNormalizer Source #
Default normalization-related settings (no custom normalization)
data InterpretOptions Source #
Use these options to tweak how Dhall derives a generic implementation of
FromDhall.
Constructors
| InterpretOptions | |
Fields
| |
data SingletonConstructors Source #
This type specifies how to model a Haskell constructor with 1 field in Dhall
For example, consider the following Haskell datatype definition:
data Example = Foo { x :: Double } | Bar DoubleDepending on which option you pick, the corresponding Dhall type could be:
< Foo : Double | Bar : Double > -- Bare
< Foo : { x : Double } | Bar : { _1 : Double } > -- Wrapped< Foo : { x : Double } | Bar : Double > -- SmartConstructors
| Bare | Never wrap the field in a record |
| Wrapped | Always wrap the field in a record |
| Smart | Only fields in a record if they are named |
Instances
| ToSingletonConstructors a => ModifyOptions (SetSingletonConstructors a :: Type) Source # | |
Defined in Dhall.Deriving Methods modifyOptions :: InterpretOptions -> InterpretOptions Source # | |
defaultInterpretOptions :: InterpretOptions Source #
Default interpret options for generics-based instances, which you can tweak or override, like this:
genericAutoWith
(defaultInterpretOptions { fieldModifier = Data.Text.Lazy.dropWhile (== '_') })This type is exactly the same as Fix except with a different
FromDhall instance. This intermediate type
simplifies the implementation of the inner loop for the
FromDhall instance for Fix.
Instances
| FromDhall (f (Result f)) => FromDhall (Result f) Source # | |
Defined in Dhall.Marshal.Decode | |
| ToDhall (f (Result f)) => ToDhall (Result f) Source # | |
Defined in Dhall.Marshal.Encode Methods injectWith :: InputNormalizer -> Encoder (Result f) Source # | |
Re-exports
Natural number
Invariant: numbers <= 0xffffffffffffffff use the NS constructor
Instances
| FromJSON Natural | |
| FromJSONKey Natural | |
Defined in Data.Aeson.Types.FromJSON Methods | |
| ToJSON Natural | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSONKey Natural | |
Defined in Data.Aeson.Types.ToJSON | |
| Data Natural | Since: base-4.8.0.0 |
Defined in Data.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Natural -> c Natural # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Natural # toConstr :: Natural -> Constr # dataTypeOf :: Natural -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Natural) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Natural) # gmapT :: (forall b. Data b => b -> b) -> Natural -> Natural # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Natural -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Natural -> r # gmapQ :: (forall d. Data d => d -> u) -> Natural -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Natural -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Natural -> m Natural # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Natural -> m Natural # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Natural -> m Natural # | |
| Bits Natural | Since: base-4.8.0 |
Defined in GHC.Bits Methods (.&.) :: Natural -> Natural -> Natural # (.|.) :: Natural -> Natural -> Natural # xor :: Natural -> Natural -> Natural # complement :: Natural -> Natural # shift :: Natural -> Int -> Natural # rotate :: Natural -> Int -> Natural # setBit :: Natural -> Int -> Natural # clearBit :: Natural -> Int -> Natural # complementBit :: Natural -> Int -> Natural # testBit :: Natural -> Int -> Bool # bitSizeMaybe :: Natural -> Maybe Int # shiftL :: Natural -> Int -> Natural # unsafeShiftL :: Natural -> Int -> Natural # shiftR :: Natural -> Int -> Natural # unsafeShiftR :: Natural -> Int -> Natural # rotateL :: Natural -> Int -> Natural # | |
| Enum Natural | Since: base-4.8.0.0 |
| Ix Natural | Since: base-4.8.0.0 |
Defined in GHC.Ix | |
| Num Natural | Note that Since: base-4.8.0.0 |
| Read Natural | Since: base-4.8.0.0 |
| Integral Natural | Since: base-4.8.0.0 |
Defined in GHC.Real | |
| Real Natural | Since: base-4.8.0.0 |
Defined in GHC.Real Methods toRational :: Natural -> Rational # | |
| Show Natural | Since: base-4.8.0.0 |
| PrintfArg Natural | Since: base-4.8.0.0 |
Defined in Text.Printf | |
| Subtractive Natural | |
Defined in Basement.Numerical.Subtractive Associated Types type Difference Natural # | |
| NFData Natural | Since: deepseq-1.4.0.0 |
Defined in Control.DeepSeq | |
| FromDhall Natural Source # | |
Defined in Dhall.Marshal.Decode | |
| ToDhall Natural Source # | |
Defined in Dhall.Marshal.Encode Methods | |
| Eq Natural | |
| Ord Natural | |
| Hashable Natural | |
Defined in Data.Hashable.Class | |
| Pretty Natural | |
Defined in Prettyprinter.Internal | |
| UniformRange Natural | |
Defined in System.Random.Internal | |
| Serialise Natural | Since: serialise-0.2.0.0 |
| KnownNat n => HasResolution (n :: Nat) | For example, |
Defined in Data.Fixed Methods resolution :: p n -> Integer # | |
| Lift Natural | |
| type Difference Natural | |
Defined in Basement.Numerical.Subtractive | |
| type Compare (a :: Natural) (b :: Natural) | |
Defined in Data.Type.Ord | |
General-purpose finite sequences.
Instances
| FromJSON1 Seq | |
| ToJSON1 Seq | |
Defined in Data.Aeson.Types.ToJSON Methods liftToJSON :: (a -> Value) -> ([a] -> Value) -> Seq a -> Value # liftToJSONList :: (a -> Value) -> ([a] -> Value) -> [Seq a] -> Value # liftToEncoding :: (a -> Encoding) -> ([a] -> Encoding) -> Seq a -> Encoding # liftToEncodingList :: (a -> Encoding) -> ([a] -> Encoding) -> [Seq a] -> Encoding # | |
| MonadFix Seq | Since: containers-0.5.11 |
Defined in Data.Sequence.Internal | |
| MonadZip Seq |
|
| Foldable Seq | |
Defined in Data.Sequence.Internal Methods fold :: Monoid m => Seq m -> m # foldMap :: Monoid m => (a -> m) -> Seq a -> m # foldMap' :: Monoid m => (a -> m) -> Seq a -> m # foldr :: (a -> b -> b) -> b -> Seq a -> b # foldr' :: (a -> b -> b) -> b -> Seq a -> b # foldl :: (b -> a -> b) -> b -> Seq a -> b # foldl' :: (b -> a -> b) -> b -> Seq a -> b # foldr1 :: (a -> a -> a) -> Seq a -> a # foldl1 :: (a -> a -> a) -> Seq a -> a # elem :: Eq a => a -> Seq a -> Bool # maximum :: Ord a => Seq a -> a # | |
| Eq1 Seq | Since: containers-0.5.9 |
| Ord1 Seq | Since: containers-0.5.9 |
Defined in Data.Sequence.Internal | |
| Read1 Seq | Since: containers-0.5.9 |
Defined in Data.Sequence.Internal | |
| Show1 Seq | Since: containers-0.5.9 |
| Traversable Seq | |
| Alternative Seq | Since: containers-0.5.4 |
| Applicative Seq | Since: containers-0.5.4 |
| Functor Seq | |
| Monad Seq | |
| MonadPlus Seq | |
| UnzipWith Seq | |
Defined in Data.Sequence.Internal Methods unzipWith' :: (x -> (a, b)) -> Seq x -> (Seq a, Seq b) | |
| Hashable1 Seq | Since: hashable-1.3.4.0 |
Defined in Data.Hashable.Class | |
| FoldableWithIndex Int Seq | |
| FunctorWithIndex Int Seq | The position in the |
| TraversableWithIndex Int Seq | |
| FromJSON a => FromJSON (Seq a) | |
| ToJSON a => ToJSON (Seq a) | |
Defined in Data.Aeson.Types.ToJSON | |
| Data a => Data (Seq a) | |
Defined in Data.Sequence.Internal Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Seq a -> c (Seq a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Seq a) # dataTypeOf :: Seq a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Seq a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Seq a)) # gmapT :: (forall b. Data b => b -> b) -> Seq a -> Seq a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Seq a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Seq a -> r # gmapQ :: (forall d. Data d => d -> u) -> Seq a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Seq a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Seq a -> m (Seq a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Seq a -> m (Seq a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Seq a -> m (Seq a) # | |
| a ~ Char => IsString (Seq a) | Since: containers-0.5.7 |
Defined in Data.Sequence.Internal Methods fromString :: String -> Seq a # | |
| Monoid (Seq a) | |
| Semigroup (Seq a) | Since: containers-0.5.7 |
| IsList (Seq a) | |
| Read a => Read (Seq a) | |
| Show a => Show (Seq a) | |
| NFData a => NFData (Seq a) | |
Defined in Data.Sequence.Internal | |
| FromDhall a => FromDhall (Seq a) Source # | |
Defined in Dhall.Marshal.Decode | |
| ToDhall a => ToDhall (Seq a) Source # | |
Defined in Dhall.Marshal.Encode Methods injectWith :: InputNormalizer -> Encoder (Seq a) Source # | |
| Eq a => Eq (Seq a) | |
| Ord a => Ord (Seq a) | |
| Hashable v => Hashable (Seq v) | Since: hashable-1.3.4.0 |
Defined in Data.Hashable.Class | |
| Ord a => Stream (Seq a) | Since: megaparsec-9.0.0 |
Defined in Text.Megaparsec.Stream Methods tokenToChunk :: Proxy (Seq a) -> Token (Seq a) -> Tokens (Seq a) # tokensToChunk :: Proxy (Seq a) -> [Token (Seq a)] -> Tokens (Seq a) # chunkToTokens :: Proxy (Seq a) -> Tokens (Seq a) -> [Token (Seq a)] # chunkLength :: Proxy (Seq a) -> Tokens (Seq a) -> Int # chunkEmpty :: Proxy (Seq a) -> Tokens (Seq a) -> Bool # take1_ :: Seq a -> Maybe (Token (Seq a), Seq a) # takeN_ :: Int -> Seq a -> Maybe (Tokens (Seq a), Seq a) # takeWhile_ :: (Token (Seq a) -> Bool) -> Seq a -> (Tokens (Seq a), Seq a) # | |
| Serialise a => Serialise (Seq a) | Since: serialise-0.2.0.0 |
| type Item (Seq a) | |
Defined in Data.Sequence.Internal | |
| type Token (Seq a) | |
Defined in Text.Megaparsec.Stream | |
| type Tokens (Seq a) | |
Defined in Text.Megaparsec.Stream | |
A space efficient, packed, unboxed Unicode text type.
Instances
Boxed vectors, supporting efficient slicing.
Instances
| FromJSON1 Vector | |
| ToJSON1 Vector | |
Defined in Data.Aeson.Types.ToJSON Methods liftToJSON :: (a -> Value) -> ([a] -> Value) -> Vector a -> Value # liftToJSONList :: (a -> Value) -> ([a] -> Value) -> [Vector a] -> Value # liftToEncoding :: (a -> Encoding) -> ([a] -> Encoding) -> Vector a -> Encoding # liftToEncodingList :: (a -> Encoding) -> ([a] -> Encoding) -> [Vector a] -> Encoding # | |
| MonadFail Vector | Since: vector-0.12.1.0 |
Defined in Data.Vector | |
| MonadFix Vector | This instance has the same semantics as the one for lists. Since: vector-0.12.2.0 |
Defined in Data.Vector | |
| MonadZip Vector | |
| Foldable Vector | |
Defined in Data.Vector Methods fold :: Monoid m => Vector m -> m # foldMap :: Monoid m => (a -> m) -> Vector a -> m # foldMap' :: Monoid m => (a -> m) -> Vector a -> m # foldr :: (a -> b -> b) -> b -> Vector a -> b # foldr' :: (a -> b -> b) -> b -> Vector a -> b # foldl :: (b -> a -> b) -> b -> Vector a -> b # foldl' :: (b -> a -> b) -> b -> Vector a -> b # foldr1 :: (a -> a -> a) -> Vector a -> a # foldl1 :: (a -> a -> a) -> Vector a -> a # elem :: Eq a => a -> Vector a -> Bool # maximum :: Ord a => Vector a -> a # minimum :: Ord a => Vector a -> a # | |
| Eq1 Vector | |
| Ord1 Vector | |
Defined in Data.Vector | |
| Read1 Vector | |
Defined in Data.Vector | |
| Show1 Vector | |
| Traversable Vector | |
| Alternative Vector | |
| Applicative Vector | |
| Functor Vector | |
| Monad Vector | |
| MonadPlus Vector | |
| NFData1 Vector | Since: vector-0.12.1.0 |
Defined in Data.Vector | |
| Vector Vector a | |
Defined in Data.Vector Methods basicUnsafeFreeze :: Mutable Vector s a -> ST s (Vector a) # basicUnsafeThaw :: Vector a -> ST s (Mutable Vector s a) # basicLength :: Vector a -> Int # basicUnsafeSlice :: Int -> Int -> Vector a -> Vector a # basicUnsafeIndexM :: Vector a -> Int -> Box a # basicUnsafeCopy :: Mutable Vector s a -> Vector a -> ST s () # | |
| FromJSON a => FromJSON (Vector a) | |
| ToJSON a => ToJSON (Vector a) | |
Defined in Data.Aeson.Types.ToJSON | |
| Data a => Data (Vector a) | |
Defined in Data.Vector Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Vector a -> c (Vector a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Vector a) # toConstr :: Vector a -> Constr # dataTypeOf :: Vector a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Vector a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Vector a)) # gmapT :: (forall b. Data b => b -> b) -> Vector a -> Vector a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Vector a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Vector a -> r # gmapQ :: (forall d. Data d => d -> u) -> Vector a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Vector a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Vector a -> m (Vector a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Vector a -> m (Vector a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Vector a -> m (Vector a) # | |
| Monoid (Vector a) | |
| Semigroup (Vector a) | |
| IsList (Vector a) | |
| Read a => Read (Vector a) | |
| Show a => Show (Vector a) | |
| NFData a => NFData (Vector a) | |
Defined in Data.Vector | |
| FromDhall a => FromDhall (Vector a) Source # | |
Defined in Dhall.Marshal.Decode | |
| ToDhall a => ToDhall (Vector a) Source # | |
Defined in Dhall.Marshal.Encode Methods injectWith :: InputNormalizer -> Encoder (Vector a) Source # | |
| Eq a => Eq (Vector a) | |
| Ord a => Ord (Vector a) | |
Defined in Data.Vector | |
| Serialise a => Serialise (Vector a) | Since: serialise-0.2.0.0 |
| type Mutable Vector | |
Defined in Data.Vector | |
| type Item (Vector a) | |
Defined in Data.Vector | |
Representable types of kind *.
This class is derivable in GHC with the DeriveGeneric flag on.
A Generic instance must satisfy the following laws:
from.to≡idto.from≡id