| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Deriving.Aeson
Description
Type-directed aeson instance CustomJSONisation
Synopsis
- newtype CustomJSON (t :: k) a = CustomJSON {
- unCustomJSON :: a
- data FieldLabelModifier (t :: k)
- data ConstructorTagModifier (t :: k)
- data OmitNothingFields
- data RejectUnknownFields
- data TagSingleConstructors
- data NoAllNullaryToStringTag
- data UnwrapUnaryRecords
- data SumTaggedObject (t :: k) (c :: k1)
- data SumUntaggedValue
- data SumObjectWithSingleField
- data SumTwoElemArray
- data StripPrefix (t :: k)
- data StripSuffix (t :: k)
- data CamelTo (separator :: Symbol)
- type CamelToKebab = CamelTo "-"
- type CamelToSnake = CamelTo "_"
- data Rename (from :: Symbol) (to :: Symbol)
- class AesonOptions (xs :: k) where
- class StringModifier (t :: k) where
- getStringModifier :: String -> String
- class FromJSON a
- class ToJSON a
- class Generic a
Documentation
newtype CustomJSON (t :: k) a Source #
A newtype wrapper which gives FromJSON/ToJSON instances with modified options.
Constructors
| CustomJSON | |
Fields
| |
Instances
| (AesonOptions t, Generic a, GFromJSON Zero (Rep a)) => FromJSON (CustomJSON t a) Source # | |
Defined in Deriving.Aeson Methods parseJSON :: Value -> Parser (CustomJSON t a) Source # parseJSONList :: Value -> Parser [CustomJSON t a] Source # omittedField :: Maybe (CustomJSON t a) Source # | |
| (AesonOptions t, Generic a, GToJSON Zero (Rep a), GToEncoding Zero (Rep a)) => ToJSON (CustomJSON t a) Source # | |
Defined in Deriving.Aeson Methods toJSON :: CustomJSON t a -> Value Source # toEncoding :: CustomJSON t a -> Encoding Source # toJSONList :: [CustomJSON t a] -> Value Source # toEncodingList :: [CustomJSON t a] -> Encoding Source # omitField :: CustomJSON t a -> Bool Source # | |
data FieldLabelModifier (t :: k) Source #
Function applied to field labels. Handy for removing common record prefixes for example.
Instances
| (StringModifier f, AesonOptions xs) => AesonOptions (FieldLabelModifier f ': xs :: [Type]) Source # | |
Defined in Deriving.Aeson Methods | |
data ConstructorTagModifier (t :: k) Source #
Function applied to constructor tags which could be handy for lower-casing them for example.
Instances
| (StringModifier f, AesonOptions xs) => AesonOptions (ConstructorTagModifier f ': xs :: [Type]) Source # | |
Defined in Deriving.Aeson Methods | |
data OmitNothingFields Source #
Record fields with a Nothing value will be omitted from the resulting object.
Instances
| AesonOptions xs => AesonOptions (OmitNothingFields ': xs :: [Type]) Source # | |
Defined in Deriving.Aeson Methods | |
data RejectUnknownFields Source #
JSON Documents mapped to records with unmatched keys will be rejected
Instances
| AesonOptions xs => AesonOptions (RejectUnknownFields ': xs :: [Type]) Source # | |
Defined in Deriving.Aeson Methods | |
data TagSingleConstructors Source #
Encode types with a single constructor as sums, so that allNullaryToStringTag and sumEncoding apply.
Instances
| AesonOptions xs => AesonOptions (TagSingleConstructors ': xs :: [Type]) Source # | |
Defined in Deriving.Aeson Methods | |
data NoAllNullaryToStringTag Source #
the encoding will always follow the sumEncoding.
Instances
| AesonOptions xs => AesonOptions (NoAllNullaryToStringTag ': xs :: [Type]) Source # | |
Defined in Deriving.Aeson Methods | |
data UnwrapUnaryRecords Source #
Unpack single-field records
Instances
| AesonOptions xs => AesonOptions (UnwrapUnaryRecords ': xs :: [Type]) Source # | |
Defined in Deriving.Aeson Methods | |
Sum encoding
data SumTaggedObject (t :: k) (c :: k1) Source #
{ "tag": t, "content": c}Instances
| (KnownSymbol t, KnownSymbol c, AesonOptions xs) => AesonOptions (SumTaggedObject t c ': xs :: [Type]) Source # | |
Defined in Deriving.Aeson Methods | |
data SumUntaggedValue Source #
CONTENT
Instances
| AesonOptions xs => AesonOptions (SumUntaggedValue ': xs :: [Type]) Source # | |
Defined in Deriving.Aeson Methods | |
data SumObjectWithSingleField Source #
{ TAG: CONTENT }Instances
| AesonOptions xs => AesonOptions (SumObjectWithSingleField ': xs :: [Type]) Source # | |
Defined in Deriving.Aeson Methods | |
data SumTwoElemArray Source #
[TAG, CONTENT]
Instances
| AesonOptions xs => AesonOptions (SumTwoElemArray ': xs :: [Type]) Source # | |
Defined in Deriving.Aeson Methods | |
Name modifiers
data StripPrefix (t :: k) Source #
Strip prefix t. If it doesn't have the prefix, keep it as-is.
Instances
| KnownSymbol k => StringModifier (StripPrefix k :: Type) Source # | |
Defined in Deriving.Aeson Methods getStringModifier :: String -> String Source # | |
data StripSuffix (t :: k) Source #
Strip suffix t. If it doesn't have the suffix, keep it as-is.
Instances
| KnownSymbol k => StringModifier (StripSuffix k :: Type) Source # | |
Defined in Deriving.Aeson Methods getStringModifier :: String -> String Source # | |
data CamelTo (separator :: Symbol) Source #
Generic CamelTo constructor taking in a separator char
Instances
| (KnownSymbol separator, NonEmptyString separator) => StringModifier (CamelTo separator :: Type) Source # | |
Defined in Deriving.Aeson Methods getStringModifier :: String -> String Source # | |
type CamelToKebab = CamelTo "-" Source #
CamelCase to kebab-case
type CamelToSnake = CamelTo "_" Source #
CamelCase to snake_case
data Rename (from :: Symbol) (to :: Symbol) Source #
Rename fields called from to to.
Instances
| (KnownSymbol from, KnownSymbol to) => StringModifier (Rename from to :: Type) Source # | |
Defined in Deriving.Aeson Methods getStringModifier :: String -> String Source # | |
Interface
class AesonOptions (xs :: k) where Source #
Reify Options from a type-level list
Methods
Instances
class StringModifier (t :: k) where Source #
Reify a function which modifies names
Methods
getStringModifier :: String -> String Source #
Instances
| (KnownSymbol separator, NonEmptyString separator) => StringModifier (CamelTo separator :: Type) Source # | |
Defined in Deriving.Aeson Methods getStringModifier :: String -> String Source # | |
| (KnownSymbol from, KnownSymbol to) => StringModifier (Rename from to :: Type) Source # | |
Defined in Deriving.Aeson Methods getStringModifier :: String -> String Source # | |
| KnownSymbol k => StringModifier (StripPrefix k :: Type) Source # | |
Defined in Deriving.Aeson Methods getStringModifier :: String -> String Source # | |
| KnownSymbol k => StringModifier (StripSuffix k :: Type) Source # | |
Defined in Deriving.Aeson Methods getStringModifier :: String -> String Source # | |
| (StringModifier a, StringModifier b) => StringModifier ((a, b) :: Type) Source # | Left-to-right ( |
Defined in Deriving.Aeson Methods getStringModifier :: String -> String Source # | |
| (StringModifier a, StringModifier b, StringModifier c) => StringModifier ((a, b, c) :: Type) Source # | Left-to-right ( |
Defined in Deriving.Aeson Methods getStringModifier :: String -> String Source # | |
| (StringModifier a, StringModifier b, StringModifier c, StringModifier d) => StringModifier ((a, b, c, d) :: Type) Source # | Left-to-right ( |
Defined in Deriving.Aeson Methods getStringModifier :: String -> String Source # | |
| StringModifier ('[] :: [a]) Source # | |
Defined in Deriving.Aeson Methods getStringModifier :: String -> String Source # | |
| (StringModifier a2, StringModifier as) => StringModifier (a2 ': as :: [a1]) Source # | Left-to-right ( |
Defined in Deriving.Aeson Methods getStringModifier :: String -> String Source # | |
Reexports
A type that can be converted from JSON, with the possibility of failure.
In many cases, you can get the compiler to generate parsing code for you (see below). To begin, let's cover writing an instance by hand.
There are various reasons a conversion could fail. For example, an
Object could be missing a required key, an Array could be of
the wrong size, or a value could be of an incompatible type.
The basic ways to signal a failed conversion are as follows:
failyields a custom error message: it is the recommended way of reporting a failure;empty(ormzero) is uninformative: use it when the error is meant to be caught by some(;<|>)typeMismatchcan be used to report a failure when the encountered value is not of the expected JSON type;unexpectedis an appropriate alternative when more than one type may be expected, or to keep the expected type implicit.
prependFailure (or modifyFailure) add more information to a parser's
error messages.
An example type and instance using typeMismatch and prependFailure:
-- Allow ourselves to writeTextliterals. {-# LANGUAGE OverloadedStrings #-} data Coord = Coord { x :: Double, y :: Double } instanceFromJSONCoord whereparseJSON(Objectv) = Coord<$>v.:"x"<*>v.:"y" -- We do not expect a non-Objectvalue here. -- We could useemptyto fail, buttypeMismatch-- gives a much more informative error message.parseJSONinvalid =prependFailure"parsing Coord failed, " (typeMismatch"Object" invalid)
For this common case of only being concerned with a single
type of JSON value, the functions withObject, withScientific, etc.
are provided. Their use is to be preferred when possible, since
they are more terse. Using withObject, we can rewrite the above instance
(assuming the same language extension and data type) as:
instanceFromJSONCoord whereparseJSON=withObject"Coord" $ \v -> Coord<$>v.:"x"<*>v.:"y"
Instead of manually writing your FromJSON instance, there are two options
to do it automatically:
- Data.Aeson.TH provides Template Haskell functions which will derive an instance at compile time. The generated instance is optimized for your type so it will probably be more efficient than the following option.
- The compiler can provide a default generic implementation for
parseJSON.
To use the second, simply add a deriving clause to your
datatype and declare a GenericFromJSON instance for your datatype without giving
a definition for parseJSON.
For example, the previous example can be simplified to just:
{-# LANGUAGE DeriveGeneric #-}
import GHC.Generics
data Coord = Coord { x :: Double, y :: Double } deriving Generic
instance FromJSON Coord
or using the DerivingVia extension
deriving viaGenericallyCoord instanceFromJSONCoord
The default implementation will be equivalent to
parseJSON = ; if you need different
options, you can customize the generic decoding by defining:genericParseJSON defaultOptions
customOptions =defaultOptions{fieldLabelModifier=maptoUpper} instanceFromJSONCoord whereparseJSON=genericParseJSONcustomOptions
Instances
| FromJSON Key | |
| FromJSON DotNetTime | |
Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser DotNetTime Source # parseJSONList :: Value -> Parser [DotNetTime] Source # omittedField :: Maybe DotNetTime Source # | |
| FromJSON Value | |
| FromJSON IntSet | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Void | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON All | Since: aeson-2.2.3.0 |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Any | Since: aeson-2.2.3.0 |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Version | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON CTime | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Int16 | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Int32 | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Int64 | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Int8 | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Word16 | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Word32 | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Word64 | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Word8 | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Ordering | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON URI | Since: aeson-2.2.0.0 |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Scientific | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Text | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Text | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON ShortText | Since: aeson-2.0.2.0 |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON CalendarDiffDays | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Day | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Month | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Quarter | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON QuarterOfYear | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON DayOfWeek | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON DiffTime | This instance includes a bounds check to prevent maliciously
large inputs to fill up the memory of the target system. You can
newtype |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON NominalDiffTime | This instance includes a bounds check to prevent maliciously
large inputs to fill up the memory of the target system. You can
newtype |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON SystemTime | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON UTCTime | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON CalendarDiffTime | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON LocalTime | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON TimeOfDay | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON ZonedTime | Supported string formats:
The first space may instead be a |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON UUID | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Integer | This instance includes a bounds check to prevent maliciously
large inputs to fill up the memory of the target system. You can
newtype |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Natural | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON () | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Bool | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Char | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Double | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Float | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Int | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON Word | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON v => FromJSON (KeyMap v) | Since: aeson-2.0.1.0 |
| FromJSON a => FromJSON (First a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (Last a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (Max a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (Min a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (WrappedMonoid a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (IntMap a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (Seq a) | |
Defined in Data.Aeson.Types.FromJSON | |
| (Ord a, FromJSON a) => FromJSON (Set a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON v => FromJSON (Tree v) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON1 f => FromJSON (Fix f) | Since: aeson-1.5.3.0 |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON1 f, Functor f) => FromJSON (Mu f) | Since: aeson-1.5.3.0 |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON1 f, Functor f) => FromJSON (Nu f) | Since: aeson-1.5.3.0 |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (DNonEmpty a) | Since: aeson-1.5.3.0 |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (DList a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (NonEmpty a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (Identity a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (First a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (Last a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (Down a) | Since: aeson-2.2.0.0 |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (Dual a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (Product a) | Since: aeson-2.2.3.0 |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (Sum a) | Since: aeson-2.2.3.0 |
Defined in Data.Aeson.Types.FromJSON | |
| (Generic a, GFromJSON Zero (Rep a)) => FromJSON (Generically a) | Since: aeson-2.1.0.0 |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, Integral a) => FromJSON (Ratio a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (Array a) | |
Defined in Data.Aeson.Types.FromJSON | |
| (Prim a, FromJSON a) => FromJSON (PrimArray a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (SmallArray a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (Maybe a) | Since: aeson-1.5.3.0 |
Defined in Data.Aeson.Types.FromJSON | |
| (Eq a, Hashable a, FromJSON a) => FromJSON (HashSet a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (Vector a) | |
Defined in Data.Aeson.Types.FromJSON | |
| (Prim a, FromJSON a) => FromJSON (Vector a) | |
Defined in Data.Aeson.Types.FromJSON | |
| (Storable a, FromJSON a) => FromJSON (Vector a) | |
Defined in Data.Aeson.Types.FromJSON | |
| (Vector Vector a, FromJSON a) => FromJSON (Vector a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (Maybe a) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON (Solo a) | Since: aeson-2.0.2.0 |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON a => FromJSON [a] | |
Defined in Data.Aeson.Types.FromJSON | |
| HasResolution a => FromJSON (Fixed a) | This instance includes a bounds check to prevent maliciously
large inputs to fill up the memory of the target system. You can
newtype |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSONKey k, Ord k, FromJSON v) => FromJSON (Map k v) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b) => FromJSON (Either a b) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON (Proxy a) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b) => FromJSON (Either a b) | Since: aeson-1.5.3.0 |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b) => FromJSON (These a b) | Since: aeson-1.5.3.0 |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b) => FromJSON (Pair a b) | Since: aeson-1.5.3.0 |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b) => FromJSON (These a b) | Since: aeson-1.5.1.0 |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON v, FromJSONKey k, Eq k, Hashable k) => FromJSON (HashMap k v) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b) => FromJSON (a, b) | |
Defined in Data.Aeson.Types.FromJSON | |
| (AesonOptions t, Generic a, GFromJSON Zero (Rep a)) => FromJSON (CustomJSON t a) Source # | |
Defined in Deriving.Aeson Methods parseJSON :: Value -> Parser (CustomJSON t a) Source # parseJSONList :: Value -> Parser [CustomJSON t a] Source # omittedField :: Maybe (CustomJSON t a) Source # | |
| FromJSON a => FromJSON (Const a b) | |
Defined in Data.Aeson.Types.FromJSON | |
| FromJSON b => FromJSON (Tagged a b) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON1 f, FromJSON1 g, FromJSON a) => FromJSON (These1 f g a) | Since: aeson-1.5.1.0 |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b, FromJSON c) => FromJSON (a, b, c) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON1 f, FromJSON1 g, FromJSON a) => FromJSON (Product f g a) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON1 f, FromJSON1 g, FromJSON a) => FromJSON (Sum f g a) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b, FromJSON c, FromJSON d) => FromJSON (a, b, c, d) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON1 f, FromJSON1 g, FromJSON a) => FromJSON (Compose f g a) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e) => FromJSON (a, b, c, d, e) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f) => FromJSON (a, b, c, d, e, f) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f, FromJSON g) => FromJSON (a, b, c, d, e, f, g) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f, FromJSON g, FromJSON h) => FromJSON (a, b, c, d, e, f, g, h) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f, FromJSON g, FromJSON h, FromJSON i) => FromJSON (a, b, c, d, e, f, g, h, i) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f, FromJSON g, FromJSON h, FromJSON i, FromJSON j) => FromJSON (a, b, c, d, e, f, g, h, i, j) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f, FromJSON g, FromJSON h, FromJSON i, FromJSON j, FromJSON k) => FromJSON (a, b, c, d, e, f, g, h, i, j, k) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f, FromJSON g, FromJSON h, FromJSON i, FromJSON j, FromJSON k, FromJSON l) => FromJSON (a, b, c, d, e, f, g, h, i, j, k, l) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f, FromJSON g, FromJSON h, FromJSON i, FromJSON j, FromJSON k, FromJSON l, FromJSON m) => FromJSON (a, b, c, d, e, f, g, h, i, j, k, l, m) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f, FromJSON g, FromJSON h, FromJSON i, FromJSON j, FromJSON k, FromJSON l, FromJSON m, FromJSON n) => FromJSON (a, b, c, d, e, f, g, h, i, j, k, l, m, n) | |
Defined in Data.Aeson.Types.FromJSON | |
| (FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f, FromJSON g, FromJSON h, FromJSON i, FromJSON j, FromJSON k, FromJSON l, FromJSON m, FromJSON n, FromJSON o) => FromJSON (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) | |
Defined in Data.Aeson.Types.FromJSON | |
A type that can be converted to JSON.
Instances in general must specify toJSON and should (but don't need
to) specify toEncoding.
An example type and instance:
-- Allow ourselves to writeTextliterals. {-# LANGUAGE OverloadedStrings #-} data Coord = Coord { x :: Double, y :: Double } instanceToJSONCoord wheretoJSON(Coord x y) =object["x".=x, "y".=y]toEncoding(Coord x y) =pairs("x".=x<>"y".=y)
Instead of manually writing your ToJSON instance, there are two options
to do it automatically:
- Data.Aeson.TH provides Template Haskell functions which will derive an instance at compile time. The generated instance is optimized for your type so it will probably be more efficient than the following option.
- The compiler can provide a default generic implementation for
toJSON.
To use the second, simply add a deriving clause to your
datatype and declare a GenericToJSON instance. If you require nothing other than
defaultOptions, it is sufficient to write (and this is the only
alternative where the default toJSON implementation is sufficient):
{-# LANGUAGE DeriveGeneric #-}
import GHC.Generics
data Coord = Coord { x :: Double, y :: Double } deriving Generic
instance ToJSON Coord where
toEncoding = genericToEncoding defaultOptions
or more conveniently using the DerivingVia extension
deriving viaGenericallyCoord instanceToJSONCoord
If on the other hand you wish to customize the generic decoding, you have to implement both methods:
customOptions =defaultOptions{fieldLabelModifier=maptoUpper} instanceToJSONCoord wheretoJSON=genericToJSONcustomOptionstoEncoding=genericToEncodingcustomOptions
Previous versions of this library only had the toJSON method. Adding
toEncoding had two reasons:
toEncodingis more efficient for the common case that the output oftoJSONis directly serialized to aByteString. Further, expressing either method in terms of the other would be non-optimal.- The choice of defaults allows a smooth transition for existing users:
Existing instances that do not define
toEncodingstill compile and have the correct semantics. This is ensured by making the default implementation oftoEncodingusetoJSON. This produces correct results, but since it performs an intermediate conversion to aValue, it will be less efficient than directly emitting anEncoding. (this also means that specifying nothing more thaninstance ToJSON Coordwould be sufficient as a generically decoding instance, but there probably exists no good reason to not specifytoEncodingin new instances.)
Instances
| ToJSON Key | |
| ToJSON DotNetTime | |
Defined in Data.Aeson.Types.ToJSON Methods toJSON :: DotNetTime -> Value Source # toEncoding :: DotNetTime -> Encoding Source # toJSONList :: [DotNetTime] -> Value Source # toEncodingList :: [DotNetTime] -> Encoding Source # omitField :: DotNetTime -> Bool Source # | |
| ToJSON Value | |
| ToJSON IntSet | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Void | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON All | Since: aeson-2.2.3.0 |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Any | Since: aeson-2.2.3.0 |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Version | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON CTime | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Int16 | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Int32 | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Int64 | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Int8 | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Word16 | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Word32 | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Word64 | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Word8 | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Ordering | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON URI | Since: aeson-2.2.0.0 |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Scientific | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Text | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Text | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON ShortText | Since: aeson-2.0.2.0 |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON CalendarDiffDays | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Day | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Month | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Quarter | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON QuarterOfYear | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON DayOfWeek | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON DiffTime | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON NominalDiffTime | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON SystemTime | Encoded as number |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON UTCTime | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON CalendarDiffTime | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON LocalTime | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON TimeOfDay | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON ZonedTime | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON UUID | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Integer | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Natural | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON () | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Bool | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Char | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Double | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Float | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Int | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON Word | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON v => ToJSON (KeyMap v) | |
| ToJSON a => ToJSON (First a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (Last a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (Max a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (Min a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (WrappedMonoid a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (IntMap a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (Seq a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (Set a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON v => ToJSON (Tree v) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON1 f => ToJSON (Fix f) | Since: aeson-1.5.3.0 |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON1 f, Functor f) => ToJSON (Mu f) | Since: aeson-1.5.3.0 |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON1 f, Functor f) => ToJSON (Nu f) | Since: aeson-1.5.3.0 |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (DNonEmpty a) | Since: aeson-1.5.3.0 |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (DList a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (NonEmpty a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (Identity a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (First a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (Last a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (Down a) | Since: aeson-2.2.0.0 |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (Dual a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (Product a) | Since: aeson-2.2.3.0 |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (Sum a) | Since: aeson-2.2.3.0 |
Defined in Data.Aeson.Types.ToJSON | |
| (Generic a, GToJSON' Value Zero (Rep a), GToJSON' Encoding Zero (Rep a)) => ToJSON (Generically a) | Since: aeson-2.1.0.0 |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON a, Integral a) => ToJSON (Ratio a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (Array a) | |
Defined in Data.Aeson.Types.ToJSON | |
| (Prim a, ToJSON a) => ToJSON (PrimArray a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (SmallArray a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (Maybe a) | Since: aeson-1.5.3.0 |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (HashSet a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (Vector a) | |
Defined in Data.Aeson.Types.ToJSON | |
| (Prim a, ToJSON a) => ToJSON (Vector a) | |
Defined in Data.Aeson.Types.ToJSON | |
| (Storable a, ToJSON a) => ToJSON (Vector a) | |
Defined in Data.Aeson.Types.ToJSON | |
| (Vector Vector a, ToJSON a) => ToJSON (Vector a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (Maybe a) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON (Solo a) | Since: aeson-2.0.2.0 |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON a => ToJSON [a] | |
Defined in Data.Aeson.Types.ToJSON | |
| HasResolution a => ToJSON (Fixed a) | |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON v, ToJSONKey k) => ToJSON (Map k v) | |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON a, ToJSON b) => ToJSON (Either a b) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON (Proxy a) | |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON a, ToJSON b) => ToJSON (Either a b) | Since: aeson-1.5.3.0 |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON a, ToJSON b) => ToJSON (These a b) | Since: aeson-1.5.3.0 |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON a, ToJSON b) => ToJSON (Pair a b) | Since: aeson-1.5.3.0 |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON a, ToJSON b) => ToJSON (These a b) | Since: aeson-1.5.1.0 |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON v, ToJSONKey k) => ToJSON (HashMap k v) | |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON a, ToJSON b) => ToJSON (a, b) | |
Defined in Data.Aeson.Types.ToJSON | |
| (AesonOptions t, Generic a, GToJSON Zero (Rep a), GToEncoding Zero (Rep a)) => ToJSON (CustomJSON t a) Source # | |
Defined in Deriving.Aeson Methods toJSON :: CustomJSON t a -> Value Source # toEncoding :: CustomJSON t a -> Encoding Source # toJSONList :: [CustomJSON t a] -> Value Source # toEncodingList :: [CustomJSON t a] -> Encoding Source # omitField :: CustomJSON t a -> Bool Source # | |
| ToJSON a => ToJSON (Const a b) | |
Defined in Data.Aeson.Types.ToJSON | |
| ToJSON b => ToJSON (Tagged a b) | |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON1 f, ToJSON1 g, ToJSON a) => ToJSON (These1 f g a) | Since: aeson-1.5.1.0 |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON a, ToJSON b, ToJSON c) => ToJSON (a, b, c) | |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON1 f, ToJSON1 g, ToJSON a) => ToJSON (Product f g a) | |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON1 f, ToJSON1 g, ToJSON a) => ToJSON (Sum f g a) | |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON a, ToJSON b, ToJSON c, ToJSON d) => ToJSON (a, b, c, d) | |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON1 f, ToJSON1 g, ToJSON a) => ToJSON (Compose f g a) | |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e) => ToJSON (a, b, c, d, e) | |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f) => ToJSON (a, b, c, d, e, f) | |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g) => ToJSON (a, b, c, d, e, f, g) | |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h) => ToJSON (a, b, c, d, e, f, g, h) | |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i) => ToJSON (a, b, c, d, e, f, g, h, i) | |
Defined in Data.Aeson.Types.ToJSON | |
| (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i, ToJSON j) => ToJSON (a, b, c, d, e, f, g, h, i, j) | |
Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c, d, e, f, g, h, i, j) -> Value Source # toEncoding :: (a, b, c, d, e, f, g, h, i, j) -> Encoding Source # toJSONList :: [(a, b, c, d, e, f, g, h, i, j)] -> Value Source # toEncodingList :: [(a, b, c, d, e, f, g, h, i, j)] -> Encoding Source # omitField :: (a, b, c, d, e, f, g, h, i, j) -> Bool Source # | |
| (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i, ToJSON j, ToJSON k) => ToJSON (a, b, c, d, e, f, g, h, i, j, k) | |
Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c, d, e, f, g, h, i, j, k) -> Value Source # toEncoding :: (a, b, c, d, e, f, g, h, i, j, k) -> Encoding Source # toJSONList :: [(a, b, c, d, e, f, g, h, i, j, k)] -> Value Source # toEncodingList :: [(a, b, c, d, e, f, g, h, i, j, k)] -> Encoding Source # omitField :: (a, b, c, d, e, f, g, h, i, j, k) -> Bool Source # | |
| (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i, ToJSON j, ToJSON k, ToJSON l) => ToJSON (a, b, c, d, e, f, g, h, i, j, k, l) | |
Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c, d, e, f, g, h, i, j, k, l) -> Value Source # toEncoding :: (a, b, c, d, e, f, g, h, i, j, k, l) -> Encoding Source # toJSONList :: [(a, b, c, d, e, f, g, h, i, j, k, l)] -> Value Source # toEncodingList :: [(a, b, c, d, e, f, g, h, i, j, k, l)] -> Encoding Source # omitField :: (a, b, c, d, e, f, g, h, i, j, k, l) -> Bool Source # | |
| (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i, ToJSON j, ToJSON k, ToJSON l, ToJSON m) => ToJSON (a, b, c, d, e, f, g, h, i, j, k, l, m) | |
Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Value Source # toEncoding :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Encoding Source # toJSONList :: [(a, b, c, d, e, f, g, h, i, j, k, l, m)] -> Value Source # toEncodingList :: [(a, b, c, d, e, f, g, h, i, j, k, l, m)] -> Encoding Source # omitField :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Bool Source # | |
| (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i, ToJSON j, ToJSON k, ToJSON l, ToJSON m, ToJSON n) => ToJSON (a, b, c, d, e, f, g, h, i, j, k, l, m, n) | |
Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Value Source # toEncoding :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Encoding Source # toJSONList :: [(a, b, c, d, e, f, g, h, i, j, k, l, m, n)] -> Value Source # toEncodingList :: [(a, b, c, d, e, f, g, h, i, j, k, l, m, n)] -> Encoding Source # omitField :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Bool Source # | |
| (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i, ToJSON j, ToJSON k, ToJSON l, ToJSON m, ToJSON n, ToJSON o) => ToJSON (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) | |
Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Value Source # toEncoding :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Encoding Source # toJSONList :: [(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)] -> Value Source # toEncodingList :: [(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)] -> Encoding Source # omitField :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Bool Source # | |
Minimal complete definition
from, to
Instances
| Generic Value | |||||
Defined in Data.Aeson.Types.Internal Associated Types
| |||||
| Generic Void | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic Fingerprint | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic Associativity | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic DecidedStrictness | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic Fixity | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic SourceStrictness | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic SourceUnpackedness | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic SrcLoc | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic GeneralCategory | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic Ordering | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic CalendarDiffDays | |||||
Defined in Data.Time.Orphans Associated Types
| |||||
| Generic Day | |||||
Defined in Data.Time.Orphans Associated Types
| |||||
| Generic Quarter | |||||
Defined in Data.Time.Orphans Associated Types
| |||||
| Generic UTCTime | |||||
Defined in Data.Time.Orphans Associated Types
| |||||
| Generic UniversalTime | |||||
Defined in Data.Time.Orphans Associated Types
| |||||
| Generic CalendarDiffTime | |||||
Defined in Data.Time.Orphans Associated Types
| |||||
| Generic LocalTime | |||||
Defined in Data.Time.Orphans Associated Types
| |||||
| Generic TimeOfDay | |||||
Defined in Data.Time.Orphans Associated Types
| |||||
| Generic TimeZone | |||||
Defined in Data.Time.Orphans Associated Types
| |||||
| Generic ZonedTime | |||||
Defined in Data.Time.Orphans Associated Types
| |||||
| Generic () | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic Bool | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (Complex a) | |||||
Defined in Data.Complex Associated Types
| |||||
| Generic (First a) | |||||
Defined in Data.Semigroup Associated Types
| |||||
| Generic (Last a) | |||||
Defined in Data.Semigroup Associated Types
| |||||
| Generic (Max a) | |||||
Defined in Data.Semigroup Associated Types
| |||||
| Generic (Min a) | |||||
Defined in Data.Semigroup Associated Types
| |||||
| Generic (WrappedMonoid m) | |||||
Defined in Data.Semigroup Associated Types
| |||||
| Generic (NonEmpty a) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (Down a) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (Par1 p) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (Maybe a) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (Solo a) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic [a] | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (WrappedMonad m a) | |||||
Defined in Control.Applicative Associated Types
| |||||
| Generic (Arg a b) | |||||
Defined in Data.Semigroup Associated Types
| |||||
| Generic (Either a b) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (Proxy t) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (U1 p) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (V1 p) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (a, b) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (WrappedArrow a b c) | |||||
Defined in Control.Applicative Associated Types
| |||||
| Generic (Rec1 f p) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (URec (Ptr ()) p) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (URec Char p) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (URec Double p) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (URec Float p) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (URec Int p) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (URec Word p) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (a, b, c) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (Product f g a) | |||||
Defined in Data.Functor.Product Associated Types
| |||||
| Generic (Sum f g a) | |||||
Defined in Data.Functor.Sum Associated Types
| |||||
| Generic ((f :*: g) p) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic ((f :+: g) p) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (K1 i c p) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (a, b, c, d) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (Compose f g a) | |||||
Defined in Data.Functor.Compose Associated Types
| |||||
| Generic ((f :.: g) p) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (M1 i c f p) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (a, b, c, d, e) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (a, b, c, d, e, f) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (a, b, c, d, e, f, g) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (a, b, c, d, e, f, g, h) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (a, b, c, d, e, f, g, h, i) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (a, b, c, d, e, f, g, h, i, j) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (a, b, c, d, e, f, g, h, i, j, k) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (a, b, c, d, e, f, g, h, i, j, k, l) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (a, b, c, d, e, f, g, h, i, j, k, l, m) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (a, b, c, d, e, f, g, h, i, j, k, l, m, n) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||
| Generic (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) | |||||
Defined in GHC.Internal.Generics Associated Types
| |||||