{-# LANGUAGE CPP #-}
{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternGuards #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -fno-warn-deprecations #-}
module Data.Aeson.Types.ToJSON
(
ToJSON(..)
, ToJSON1(..)
, toJSON1
, toEncoding1
, ToJSON2(..)
, toJSON2
, toEncoding2
, GToJSON'(..)
, ToArgs(..)
, genericToJSON
, genericToEncoding
, genericLiftToJSON
, genericLiftToEncoding
, ToJSONKey(..)
, ToJSONKeyFunction(..)
, toJSONKeyText
, toJSONKeyKey
, contramapToJSONKeyFunction
, GToJSONKey()
, genericToJSONKey
, KeyValue(..)
, KeyValuePair(..)
, FromPairs(..)
, listEncoding
, listValue
) where
import Prelude.Compat
import Control.Applicative (Const(..))
import Control.Monad.ST (ST)
import Data.Aeson.Encoding (Encoding, Encoding', Series, dict, emptyArray_)
import Data.Aeson.Encoding.Internal ((>*<))
import Data.Aeson.Internal.Functions (mapKeyVal, mapKeyValO)
import Data.Aeson.Types.Generic (AllNullary, False, IsRecord, One, ProductSize, Tagged2(..), True, Zero, productSize)
import Data.Aeson.Types.Internal
import qualified Data.Aeson.Key as Key
import qualified Data.Aeson.KeyMap as KM
import Data.Attoparsec.Number (Number(..))
import Data.Bits (unsafeShiftR)
import Data.Coerce (coerce)
import Data.DList (DList)
import Data.Fixed (Fixed, HasResolution, Nano)
import Data.Foldable (toList)
import Data.Functor.Compose (Compose(..))
import Data.Functor.Contravariant (Contravariant (..))
import Data.Functor.Identity (Identity(..))
import Data.Functor.Product (Product(..))
import Data.Functor.Sum (Sum(..))
import Data.Functor.These (These1 (..))
import Data.Int (Int16, Int32, Int64, Int8)
import Data.List (intersperse)
import Data.List.NonEmpty (NonEmpty(..))
import Data.Proxy (Proxy(..))
import Data.Ratio (Ratio, denominator, numerator)
import Data.Scientific (Scientific)
import Data.Tagged (Tagged(..))
import Data.Text (Text, pack)
import Data.These (These (..))
import Data.Time (Day, DiffTime, LocalTime, NominalDiffTime, TimeOfDay, UTCTime, ZonedTime)
import Data.Time.Calendar.Month.Compat (Month)
import Data.Time.Calendar.Quarter.Compat (Quarter, QuarterOfYear (..))
import Data.Time.Calendar.Compat (CalendarDiffDays (..), DayOfWeek (..))
import Data.Time.LocalTime.Compat (CalendarDiffTime (..))
import Data.Time.Clock.System.Compat (SystemTime (..))
import Data.Time.Format.Compat (FormatTime, formatTime, defaultTimeLocale)
import Data.Tuple.Solo (Solo (..), getSolo)
import Data.Vector (Vector)
import Data.Version (Version, showVersion)
import Data.Void (Void, absurd)
import Data.Word (Word16, Word32, Word64, Word8)
import Foreign.Storable (Storable)
import Foreign.C.Types (CTime (..))
import GHC.Generics
#if !MIN_VERSION_base(4,17,0)
import GHC.Generics.Generically (Generically (..), Generically1 (..))
#endif
import Numeric.Natural (Natural)
import qualified Data.Aeson.Encoding as E
import qualified Data.Aeson.Encoding.Internal as E (InArray, comma, econcat, retagEncoding, key)
import qualified Data.ByteString.Lazy as L
import qualified Data.DList as DList
#if MIN_VERSION_dlist(1,0,0)
import qualified Data.DList.DNonEmpty as DNE
#endif
import qualified Data.Fix as F
import qualified Data.HashMap.Strict as H
import qualified Data.HashSet as HashSet
import qualified Data.IntMap as IntMap
import qualified Data.IntSet as IntSet
import qualified Data.List.NonEmpty as NE
import qualified Data.Map as M
import qualified Data.Monoid as Monoid
import qualified Data.Scientific as Scientific
import qualified Data.Semigroup as Semigroup
import qualified Data.Sequence as Seq
import qualified Data.Set as Set
import qualified Data.Strict as S
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import qualified Data.Text.Lazy as LT
import qualified Data.Text.Short as ST
import qualified Data.Tree as Tree
import qualified Data.UUID.Types as UUID
import qualified Data.Vector as V
import qualified Data.Vector.Generic as VG
import qualified Data.Vector.Mutable as VM
import qualified Data.Vector.Primitive as VP
import qualified Data.Vector.Storable as VS
import qualified Data.Vector.Unboxed as VU
import qualified Data.Aeson.Encoding.Builder as EB
import qualified Data.ByteString.Builder as B
import qualified GHC.Exts as Exts
import qualified Data.Primitive.Array as PM
import qualified Data.Primitive.SmallArray as PM
import qualified Data.Primitive.Types as PM
import qualified Data.Primitive.PrimArray as PM
toJSONPair :: (a -> Value) -> (b -> Value) -> (a, b) -> Value
toJSONPair :: forall a b. (a -> Value) -> (b -> Value) -> (a, b) -> Value
toJSONPair a -> Value
a b -> Value
b = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 a -> Value
a (forall a. (a -> Value) -> [a] -> Value
listValue a -> Value
a) b -> Value
b (forall a. (a -> Value) -> [a] -> Value
listValue b -> Value
b)
realFloatToJSON :: RealFloat a => a -> Value
realFloatToJSON :: forall a. RealFloat a => a -> Value
realFloatToJSON a
d
| forall a. RealFloat a => a -> Bool
isNaN a
d = Value
Null
| forall a. RealFloat a => a -> Bool
isInfinite a
d = if a
d forall a. Ord a => a -> a -> Bool
> a
0 then Value
"+inf" else Value
"-inf"
| Bool
otherwise = Scientific -> Value
Number forall a b. (a -> b) -> a -> b
$ forall a. RealFloat a => a -> Scientific
Scientific.fromFloatDigits a
d
class GToJSON' enc arity f where
gToJSON :: Options -> ToArgs enc arity a -> f a -> enc
data ToArgs res arity a where
NoToArgs :: ToArgs res Zero a
To1Args :: (a -> res) -> ([a] -> res) -> ToArgs res One a
genericToJSON :: (Generic a, GToJSON' Value Zero (Rep a))
=> Options -> a -> Value
genericToJSON :: forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
genericToJSON Options
opts = forall enc arity (f :: * -> *) a.
GToJSON' enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
gToJSON Options
opts forall res a. ToArgs res Zero a
NoToArgs forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a x. Generic a => a -> Rep a x
from
genericLiftToJSON :: (Generic1 f, GToJSON' Value One (Rep1 f))
=> Options -> (a -> Value) -> ([a] -> Value)
-> f a -> Value
genericLiftToJSON :: forall (f :: * -> *) a.
(Generic1 f, GToJSON' Value One (Rep1 f)) =>
Options -> (a -> Value) -> ([a] -> Value) -> f a -> Value
genericLiftToJSON Options
opts a -> Value
tj [a] -> Value
tjl = forall enc arity (f :: * -> *) a.
GToJSON' enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
gToJSON Options
opts (forall a res. (a -> res) -> ([a] -> res) -> ToArgs res One a
To1Args a -> Value
tj [a] -> Value
tjl) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f a
from1
genericToEncoding :: (Generic a, GToJSON' Encoding Zero (Rep a))
=> Options -> a -> Encoding
genericToEncoding :: forall a.
(Generic a, GToJSON' Encoding Zero (Rep a)) =>
Options -> a -> Encoding
genericToEncoding Options
opts = forall enc arity (f :: * -> *) a.
GToJSON' enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
gToJSON Options
opts forall res a. ToArgs res Zero a
NoToArgs forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a x. Generic a => a -> Rep a x
from
genericLiftToEncoding :: (Generic1 f, GToJSON' Encoding One (Rep1 f))
=> Options -> (a -> Encoding) -> ([a] -> Encoding)
-> f a -> Encoding
genericLiftToEncoding :: forall (f :: * -> *) a.
(Generic1 f, GToJSON' Encoding One (Rep1 f)) =>
Options -> (a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
genericLiftToEncoding Options
opts a -> Encoding
te [a] -> Encoding
tel = forall enc arity (f :: * -> *) a.
GToJSON' enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
gToJSON Options
opts (forall a res. (a -> res) -> ([a] -> res) -> ToArgs res One a
To1Args a -> Encoding
te [a] -> Encoding
tel) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f a
from1
class ToJSON a where
toJSON :: a -> Value
default toJSON :: (Generic a, GToJSON' Value Zero (Rep a)) => a -> Value
toJSON = forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
genericToJSON Options
defaultOptions
toEncoding :: a -> Encoding
toEncoding = Value -> Encoding
E.value forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. ToJSON a => a -> Value
toJSON
toJSONList :: [a] -> Value
toJSONList = forall a. (a -> Value) -> [a] -> Value
listValue forall a. ToJSON a => a -> Value
toJSON
toEncodingList :: [a] -> Encoding
toEncodingList = forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding forall a. ToJSON a => a -> Encoding
toEncoding
instance (Generic a, GToJSON' Value Zero (Rep a), GToJSON' Encoding Zero (Rep a)) => ToJSON (Generically a) where
toJSON :: Generically a -> Value
toJSON = coerce :: forall a b. Coercible a b => a -> b
coerce (forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
genericToJSON Options
defaultOptions :: a -> Value)
toEncoding :: Generically a -> Encoding
toEncoding = coerce :: forall a b. Coercible a b => a -> b
coerce (forall a.
(Generic a, GToJSON' Encoding Zero (Rep a)) =>
Options -> a -> Encoding
genericToEncoding Options
defaultOptions :: a -> Encoding)
class KeyValue kv where
(.=) :: ToJSON v => Key -> v -> kv
infixr 8 .=
instance KeyValue Series where
Key
name .= :: forall v. ToJSON v => Key -> v -> Series
.= v
value = Key -> Encoding -> Series
E.pair Key
name (forall a. ToJSON a => a -> Encoding
toEncoding v
value)
{-# INLINE (.=) #-}
instance (key ~ Key, value ~ Value) => KeyValue (key, value) where
Key
name .= :: forall v. ToJSON v => Key -> v -> (key, value)
.= v
value = (Key
name, forall a. ToJSON a => a -> Value
toJSON v
value)
{-# INLINE (.=) #-}
instance value ~ Value => KeyValue (KM.KeyMap value) where
Key
name .= :: forall v. ToJSON v => Key -> v -> KeyMap value
.= v
value = forall v. Key -> v -> KeyMap v
KM.singleton Key
name (forall a. ToJSON a => a -> Value
toJSON v
value)
{-# INLINE (.=) #-}
class ToJSONKey a where
toJSONKey :: ToJSONKeyFunction a
default toJSONKey :: ToJSON a => ToJSONKeyFunction a
toJSONKey = forall a. (a -> Value) -> (a -> Encoding) -> ToJSONKeyFunction a
ToJSONKeyValue forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => a -> Encoding
toEncoding
toJSONKeyList :: ToJSONKeyFunction [a]
default toJSONKeyList :: ToJSON a => ToJSONKeyFunction [a]
toJSONKeyList = forall a. (a -> Value) -> (a -> Encoding) -> ToJSONKeyFunction a
ToJSONKeyValue forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => a -> Encoding
toEncoding
data ToJSONKeyFunction a
= ToJSONKeyText !(a -> Key) !(a -> Encoding' Key)
| ToJSONKeyValue !(a -> Value) !(a -> Encoding)
toJSONKeyText :: (a -> Text) -> ToJSONKeyFunction a
toJSONKeyText :: forall a. (a -> Text) -> ToJSONKeyFunction a
toJSONKeyText a -> Text
f = forall a. (a -> Key) -> ToJSONKeyFunction a
toJSONKeyKey (Text -> Key
Key.fromText forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Text
f)
toJSONKeyKey :: (a -> Key) -> ToJSONKeyFunction a
toJSONKeyKey :: forall a. (a -> Key) -> ToJSONKeyFunction a
toJSONKeyKey a -> Key
f = forall a. (a -> Key) -> (a -> Encoding' Key) -> ToJSONKeyFunction a
ToJSONKeyText a -> Key
f (forall a. Key -> Encoding' a
E.key forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Key
f)
toJSONKeyTextEnc :: (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc :: forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc a -> Encoding' Key
e = forall a. (a -> Key) -> (a -> Encoding' Key) -> ToJSONKeyFunction a
ToJSONKeyText a -> Key
tot a -> Encoding' Key
e
where
tot :: a -> Key
tot = Text -> Key
Key.fromText
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> Text -> Text
T.dropAround (forall a. Eq a => a -> a -> Bool
== Char
'"')
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Text
T.decodeLatin1
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ByteString
L.toStrict
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Encoding' a -> ByteString
E.encodingToLazyByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Encoding' Key
e
instance Contravariant ToJSONKeyFunction where
contramap :: forall a' a.
(a' -> a) -> ToJSONKeyFunction a -> ToJSONKeyFunction a'
contramap = forall a' a.
(a' -> a) -> ToJSONKeyFunction a -> ToJSONKeyFunction a'
contramapToJSONKeyFunction
contramapToJSONKeyFunction :: (b -> a) -> ToJSONKeyFunction a -> ToJSONKeyFunction b
contramapToJSONKeyFunction :: forall a' a.
(a' -> a) -> ToJSONKeyFunction a -> ToJSONKeyFunction a'
contramapToJSONKeyFunction b -> a
h ToJSONKeyFunction a
x = case ToJSONKeyFunction a
x of
ToJSONKeyText a -> Key
f a -> Encoding' Key
g -> forall a. (a -> Key) -> (a -> Encoding' Key) -> ToJSONKeyFunction a
ToJSONKeyText (a -> Key
f forall b c a. (b -> c) -> (a -> b) -> a -> c
. b -> a
h) (a -> Encoding' Key
g forall b c a. (b -> c) -> (a -> b) -> a -> c
. b -> a
h)
ToJSONKeyValue a -> Value
f a -> Encoding
g -> forall a. (a -> Value) -> (a -> Encoding) -> ToJSONKeyFunction a
ToJSONKeyValue (a -> Value
f forall b c a. (b -> c) -> (a -> b) -> a -> c
. b -> a
h) (a -> Encoding
g forall b c a. (b -> c) -> (a -> b) -> a -> c
. b -> a
h)
genericToJSONKey :: (Generic a, GToJSONKey (Rep a))
=> JSONKeyOptions -> ToJSONKeyFunction a
genericToJSONKey :: forall a.
(Generic a, GToJSONKey (Rep a)) =>
JSONKeyOptions -> ToJSONKeyFunction a
genericToJSONKey JSONKeyOptions
opts = forall a. (a -> Key) -> ToJSONKeyFunction a
toJSONKeyKey ([Char] -> Key
Key.fromString forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSONKeyOptions -> [Char] -> [Char]
keyModifier JSONKeyOptions
opts forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall {k} (f :: k -> *) (a :: k). GetConName f => f a -> [Char]
getConName forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a x. Generic a => a -> Rep a x
from)
class GetConName f => GToJSONKey f
instance GetConName f => GToJSONKey f
class ToJSON1 f where
liftToJSON :: (a -> Value) -> ([a] -> Value) -> f a -> Value
default liftToJSON :: (Generic1 f, GToJSON' Value One (Rep1 f))
=> (a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON = forall (f :: * -> *) a.
(Generic1 f, GToJSON' Value One (Rep1 f)) =>
Options -> (a -> Value) -> ([a] -> Value) -> f a -> Value
genericLiftToJSON Options
defaultOptions
liftToJSONList :: (a -> Value) -> ([a] -> Value) -> [f a] -> Value
liftToJSONList a -> Value
f [a] -> Value
g = forall a. (a -> Value) -> [a] -> Value
listValue (forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON a -> Value
f [a] -> Value
g)
liftToEncoding :: (a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
default liftToEncoding :: (Generic1 f, GToJSON' Encoding One (Rep1 f))
=> (a -> Encoding) -> ([a] -> Encoding)
-> f a -> Encoding
liftToEncoding = forall (f :: * -> *) a.
(Generic1 f, GToJSON' Encoding One (Rep1 f)) =>
Options -> (a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
genericLiftToEncoding Options
defaultOptions
liftToEncodingList :: (a -> Encoding) -> ([a] -> Encoding) -> [f a] -> Encoding
liftToEncodingList a -> Encoding
f [a] -> Encoding
g = forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding (forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding a -> Encoding
f [a] -> Encoding
g)
instance (Generic1 f, GToJSON' Value One (Rep1 f), GToJSON' Encoding One (Rep1 f)) => ToJSON1 (Generically1 f) where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Generically1 f a -> Value
liftToJSON :: forall a.
(a -> Value) -> ([a] -> Value) -> Generically1 f a -> Value
liftToJSON = coerce :: forall a b. Coercible a b => a -> b
coerce (forall (f :: * -> *) a.
(Generic1 f, GToJSON' Value One (Rep1 f)) =>
Options -> (a -> Value) -> ([a] -> Value) -> f a -> Value
genericLiftToJSON Options
defaultOptions :: (a -> Value) -> ([a] -> Value) -> f a -> Value)
liftToEncoding :: forall a. (a -> Encoding) -> ([a] -> Encoding) -> Generically1 f a -> Encoding
liftToEncoding :: forall a.
(a -> Encoding)
-> ([a] -> Encoding) -> Generically1 f a -> Encoding
liftToEncoding = coerce :: forall a b. Coercible a b => a -> b
coerce (forall (f :: * -> *) a.
(Generic1 f, GToJSON' Encoding One (Rep1 f)) =>
Options -> (a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
genericLiftToEncoding Options
defaultOptions :: (a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding)
toJSON1 :: (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1 :: forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1 = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
{-# INLINE toJSON1 #-}
toEncoding1 :: (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1 :: forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1 = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
{-# INLINE toEncoding1 #-}
class ToJSON2 f where
liftToJSON2 :: (a -> Value) -> ([a] -> Value) -> (b -> Value) -> ([b] -> Value) -> f a b -> Value
liftToJSONList2 :: (a -> Value) -> ([a] -> Value) -> (b -> Value) -> ([b] -> Value) -> [f a b] -> Value
liftToJSONList2 a -> Value
fa [a] -> Value
ga b -> Value
fb [b] -> Value
gb = forall a. (a -> Value) -> [a] -> Value
listValue (forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 a -> Value
fa [a] -> Value
ga b -> Value
fb [b] -> Value
gb)
liftToEncoding2 :: (a -> Encoding) -> ([a] -> Encoding) -> (b -> Encoding) -> ([b] -> Encoding) -> f a b -> Encoding
liftToEncodingList2 :: (a -> Encoding) -> ([a] -> Encoding) -> (b -> Encoding) -> ([b] -> Encoding) -> [f a b] -> Encoding
liftToEncodingList2 a -> Encoding
fa [a] -> Encoding
ga b -> Encoding
fb [b] -> Encoding
gb = forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding (forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 a -> Encoding
fa [a] -> Encoding
ga b -> Encoding
fb [b] -> Encoding
gb)
toJSON2 :: (ToJSON2 f, ToJSON a, ToJSON b) => f a b -> Value
toJSON2 :: forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Value
toJSON2 = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
{-# INLINE toJSON2 #-}
toEncoding2 :: (ToJSON2 f, ToJSON a, ToJSON b) => f a b -> Encoding
toEncoding2 :: forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Encoding
toEncoding2 = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
{-# INLINE toEncoding2 #-}
listEncoding :: (a -> Encoding) -> [a] -> Encoding
listEncoding :: forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding = forall a. (a -> Encoding) -> [a] -> Encoding
E.list
{-# INLINE listEncoding #-}
listValue :: (a -> Value) -> [a] -> Value
listValue :: forall a. (a -> Value) -> [a] -> Value
listValue a -> Value
f = Array -> Value
Array forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. [a] -> Vector a
V.fromList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (a -> b) -> [a] -> [b]
map a -> Value
f
{-# INLINE listValue #-}
instance ToJSON1 [] where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> [a] -> Value
liftToJSON a -> Value
_ [a] -> Value
to' = [a] -> Value
to'
liftToEncoding :: forall a. (a -> Encoding) -> ([a] -> Encoding) -> [a] -> Encoding
liftToEncoding a -> Encoding
_ [a] -> Encoding
to' = [a] -> Encoding
to'
instance (ToJSON a) => ToJSON [a] where
{-# SPECIALIZE instance ToJSON String #-}
{-# SPECIALIZE instance ToJSON [String] #-}
{-# SPECIALIZE instance ToJSON [Array] #-}
{-# SPECIALIZE instance ToJSON [Object] #-}
toJSON :: [a] -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: [a] -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance {-# OVERLAPPABLE #-} (GToJSON' enc arity a) => GToJSON' enc arity (M1 i c a) where
gToJSON :: forall a. Options -> ToArgs enc arity a -> M1 i c a a -> enc
gToJSON Options
opts ToArgs enc arity a
targs = forall enc arity (f :: * -> *) a.
GToJSON' enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
gToJSON Options
opts ToArgs enc arity a
targs forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k i (c :: Meta) (f :: k -> *) (p :: k). M1 i c f p -> f p
unM1
{-# INLINE gToJSON #-}
instance GToJSON' enc One Par1 where
gToJSON :: forall a. Options -> ToArgs enc One a -> Par1 a -> enc
gToJSON Options
_opts (To1Args a -> enc
tj [a] -> enc
_) = a -> enc
tj forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall p. Par1 p -> p
unPar1
{-# INLINE gToJSON #-}
instance ( ConsToJSON enc arity a
, AllNullary (C1 c a) allNullary
, SumToJSON enc arity (C1 c a) allNullary
) => GToJSON' enc arity (D1 d (C1 c a)) where
gToJSON :: forall a. Options -> ToArgs enc arity a -> D1 d (C1 c a) a -> enc
gToJSON Options
opts ToArgs enc arity a
targs
| Options -> Bool
tagSingleConstructors Options
opts = (forall {k} (s :: k) b. Tagged s b -> b
unTagged :: Tagged allNullary enc -> enc)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall {k} enc arity (f :: * -> *) (allNullary :: k) a.
SumToJSON enc arity f allNullary =>
Options -> ToArgs enc arity a -> f a -> Tagged allNullary enc
sumToJSON Options
opts ToArgs enc arity a
targs
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k i (c :: Meta) (f :: k -> *) (p :: k). M1 i c f p -> f p
unM1
| Bool
otherwise = forall enc arity (f :: * -> *) a.
ConsToJSON enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
consToJSON Options
opts ToArgs enc arity a
targs forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k i (c :: Meta) (f :: k -> *) (p :: k). M1 i c f p -> f p
unM1 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k i (c :: Meta) (f :: k -> *) (p :: k). M1 i c f p -> f p
unM1
{-# INLINE gToJSON #-}
instance (ConsToJSON enc arity a) => GToJSON' enc arity (C1 c a) where
gToJSON :: forall a. Options -> ToArgs enc arity a -> C1 c a a -> enc
gToJSON Options
opts ToArgs enc arity a
targs = forall enc arity (f :: * -> *) a.
ConsToJSON enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
consToJSON Options
opts ToArgs enc arity a
targs forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k i (c :: Meta) (f :: k -> *) (p :: k). M1 i c f p -> f p
unM1
{-# INLINE gToJSON #-}
instance ( AllNullary (a :+: b) allNullary
, SumToJSON enc arity (a :+: b) allNullary
) => GToJSON' enc arity (a :+: b)
where
gToJSON :: forall a. Options -> ToArgs enc arity a -> (:+:) a b a -> enc
gToJSON Options
opts ToArgs enc arity a
targs = (forall {k} (s :: k) b. Tagged s b -> b
unTagged :: Tagged allNullary enc -> enc)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall {k} enc arity (f :: * -> *) (allNullary :: k) a.
SumToJSON enc arity f allNullary =>
Options -> ToArgs enc arity a -> f a -> Tagged allNullary enc
sumToJSON Options
opts ToArgs enc arity a
targs
{-# INLINE gToJSON #-}
instance GToJSON' Value arity V1 where
gToJSON :: forall a. Options -> ToArgs Value arity a -> V1 a -> Value
gToJSON Options
_ ToArgs Value arity a
_ V1 a
x = V1 a
x seq :: forall a b. a -> b -> b
`seq` forall a. HasCallStack => [Char] -> a
error [Char]
"case: V1"
{-# INLINE gToJSON #-}
instance ToJSON a => GToJSON' Value arity (K1 i a) where
gToJSON :: forall a. Options -> ToArgs Value arity a -> K1 i a a -> Value
gToJSON Options
_opts ToArgs Value arity a
_ = forall a. ToJSON a => a -> Value
toJSON forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k i c (p :: k). K1 i c p -> c
unK1
{-# INLINE gToJSON #-}
instance ToJSON1 f => GToJSON' Value One (Rec1 f) where
gToJSON :: forall a. Options -> ToArgs Value One a -> Rec1 f a -> Value
gToJSON Options
_opts (To1Args a -> Value
tj [a] -> Value
tjl) = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON a -> Value
tj [a] -> Value
tjl forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k (f :: k -> *) (p :: k). Rec1 f p -> f p
unRec1
{-# INLINE gToJSON #-}
instance GToJSON' Value arity U1 where
gToJSON :: forall a. Options -> ToArgs Value arity a -> U1 a -> Value
gToJSON Options
_opts ToArgs Value arity a
_ U1 a
_ = Value
emptyArray
{-# INLINE gToJSON #-}
instance ( WriteProduct arity a, WriteProduct arity b
, ProductSize a, ProductSize b
) => GToJSON' Value arity (a :*: b)
where
gToJSON :: forall a. Options -> ToArgs Value arity a -> (:*:) a b a -> Value
gToJSON Options
opts ToArgs Value arity a
targs (:*:) a b a
p =
Array -> Value
Array forall a b. (a -> b) -> a -> b
$ forall a. (forall s. ST s (MVector s a)) -> Vector a
V.create forall a b. (a -> b) -> a -> b
$ do
MVector s Value
mv <- forall (m :: * -> *) a.
PrimMonad m =>
Int -> m (MVector (PrimState m) a)
VM.unsafeNew Int
lenProduct
forall arity (f :: * -> *) a s.
WriteProduct arity f =>
Options
-> ToArgs Value arity a
-> MVector s Value
-> Int
-> Int
-> f a
-> ST s ()
writeProduct Options
opts ToArgs Value arity a
targs MVector s Value
mv Int
0 Int
lenProduct (:*:) a b a
p
forall (m :: * -> *) a. Monad m => a -> m a
return MVector s Value
mv
where
lenProduct :: Int
lenProduct = (forall (s :: * -> *) b. Tagged2 s b -> b
unTagged2 :: Tagged2 (a :*: b) Int -> Int)
forall (f :: * -> *). ProductSize f => Tagged2 f Int
productSize
{-# INLINE gToJSON #-}
instance ( ToJSON1 f
, GToJSON' Value One g
) => GToJSON' Value One (f :.: g)
where
gToJSON :: forall a. Options -> ToArgs Value One a -> (:.:) f g a -> Value
gToJSON Options
opts ToArgs Value One a
targs =
let gtj :: g a -> Value
gtj = forall enc arity (f :: * -> *) a.
GToJSON' enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
gToJSON Options
opts ToArgs Value One a
targs in
forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON g a -> Value
gtj (forall a. (a -> Value) -> [a] -> Value
listValue g a -> Value
gtj) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
(:.:) f g p -> f (g p)
unComp1
{-# INLINE gToJSON #-}
instance ToJSON a => GToJSON' Encoding arity (K1 i a) where
gToJSON :: forall a.
Options -> ToArgs Encoding arity a -> K1 i a a -> Encoding
gToJSON Options
_opts ToArgs Encoding arity a
_ = forall a. ToJSON a => a -> Encoding
toEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k i c (p :: k). K1 i c p -> c
unK1
{-# INLINE gToJSON #-}
instance ToJSON1 f => GToJSON' Encoding One (Rec1 f) where
gToJSON :: forall a. Options -> ToArgs Encoding One a -> Rec1 f a -> Encoding
gToJSON Options
_opts (To1Args a -> Encoding
te [a] -> Encoding
tel) = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding a -> Encoding
te [a] -> Encoding
tel forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k (f :: k -> *) (p :: k). Rec1 f p -> f p
unRec1
{-# INLINE gToJSON #-}
instance GToJSON' Encoding arity U1 where
gToJSON :: forall a. Options -> ToArgs Encoding arity a -> U1 a -> Encoding
gToJSON Options
_opts ToArgs Encoding arity a
_ U1 a
_ = Encoding
E.emptyArray_
{-# INLINE gToJSON #-}
instance ( EncodeProduct arity a
, EncodeProduct arity b
) => GToJSON' Encoding arity (a :*: b)
where
gToJSON :: forall a.
Options -> ToArgs Encoding arity a -> (:*:) a b a -> Encoding
gToJSON Options
opts ToArgs Encoding arity a
targs (:*:) a b a
p = forall a. (a -> Encoding) -> [a] -> Encoding
E.list forall a b. Encoding' a -> Encoding' b
E.retagEncoding [forall arity (f :: * -> *) a.
EncodeProduct arity f =>
Options -> ToArgs Encoding arity a -> f a -> Encoding' InArray
encodeProduct Options
opts ToArgs Encoding arity a
targs (:*:) a b a
p]
{-# INLINE gToJSON #-}
instance ( ToJSON1 f
, GToJSON' Encoding One g
) => GToJSON' Encoding One (f :.: g)
where
gToJSON :: forall a.
Options -> ToArgs Encoding One a -> (:.:) f g a -> Encoding
gToJSON Options
opts ToArgs Encoding One a
targs =
let gte :: g a -> Encoding
gte = forall enc arity (f :: * -> *) a.
GToJSON' enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
gToJSON Options
opts ToArgs Encoding One a
targs in
forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding g a -> Encoding
gte (forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding g a -> Encoding
gte) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
(:.:) f g p -> f (g p)
unComp1
{-# INLINE gToJSON #-}
class SumToJSON enc arity f allNullary where
sumToJSON :: Options -> ToArgs enc arity a
-> f a -> Tagged allNullary enc
instance ( GetConName f
, FromString enc
, TaggedObject enc arity f
, SumToJSON' ObjectWithSingleField enc arity f
, SumToJSON' TwoElemArray enc arity f
, SumToJSON' UntaggedValue enc arity f
) => SumToJSON enc arity f True
where
sumToJSON :: forall a. Options -> ToArgs enc arity a -> f a -> Tagged True enc
sumToJSON Options
opts ToArgs enc arity a
targs
| Options -> Bool
allNullaryToStringTag Options
opts = forall {k} (s :: k) b. b -> Tagged s b
Tagged forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall enc. FromString enc => [Char] -> enc
fromString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Options -> [Char] -> [Char]
constructorTagModifier Options
opts forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall {k} (f :: k -> *) (a :: k). GetConName f => f a -> [Char]
getConName
| Bool
otherwise = forall {k} (s :: k) b. b -> Tagged s b
Tagged forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall enc arity (f :: * -> *) a.
(TaggedObject enc arity f,
SumToJSON' ObjectWithSingleField enc arity f,
SumToJSON' TwoElemArray enc arity f,
SumToJSON' UntaggedValue enc arity f) =>
Options -> ToArgs enc arity a -> f a -> enc
nonAllNullarySumToJSON Options
opts ToArgs enc arity a
targs
{-# INLINE sumToJSON #-}
instance ( TaggedObject enc arity f
, SumToJSON' ObjectWithSingleField enc arity f
, SumToJSON' TwoElemArray enc arity f
, SumToJSON' UntaggedValue enc arity f
) => SumToJSON enc arity f False
where
sumToJSON :: forall a. Options -> ToArgs enc arity a -> f a -> Tagged False enc
sumToJSON Options
opts ToArgs enc arity a
targs = forall {k} (s :: k) b. b -> Tagged s b
Tagged forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall enc arity (f :: * -> *) a.
(TaggedObject enc arity f,
SumToJSON' ObjectWithSingleField enc arity f,
SumToJSON' TwoElemArray enc arity f,
SumToJSON' UntaggedValue enc arity f) =>
Options -> ToArgs enc arity a -> f a -> enc
nonAllNullarySumToJSON Options
opts ToArgs enc arity a
targs
{-# INLINE sumToJSON #-}
nonAllNullarySumToJSON :: ( TaggedObject enc arity f
, SumToJSON' ObjectWithSingleField enc arity f
, SumToJSON' TwoElemArray enc arity f
, SumToJSON' UntaggedValue enc arity f
) => Options -> ToArgs enc arity a
-> f a -> enc
nonAllNullarySumToJSON :: forall enc arity (f :: * -> *) a.
(TaggedObject enc arity f,
SumToJSON' ObjectWithSingleField enc arity f,
SumToJSON' TwoElemArray enc arity f,
SumToJSON' UntaggedValue enc arity f) =>
Options -> ToArgs enc arity a -> f a -> enc
nonAllNullarySumToJSON Options
opts ToArgs enc arity a
targs =
case Options -> SumEncoding
sumEncoding Options
opts of
TaggedObject{[Char]
contentsFieldName :: SumEncoding -> [Char]
tagFieldName :: SumEncoding -> [Char]
contentsFieldName :: [Char]
tagFieldName :: [Char]
..} ->
forall enc arity (f :: * -> *) a.
TaggedObject enc arity f =>
Options -> ToArgs enc arity a -> Key -> Key -> f a -> enc
taggedObject Options
opts ToArgs enc arity a
targs ([Char] -> Key
Key.fromString [Char]
tagFieldName) ([Char] -> Key
Key.fromString [Char]
contentsFieldName)
SumEncoding
ObjectWithSingleField ->
(forall {k} (s :: k) b. Tagged s b -> b
unTagged :: Tagged ObjectWithSingleField enc -> enc)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall {k} (s :: k) enc arity (f :: * -> *) a.
SumToJSON' s enc arity f =>
Options -> ToArgs enc arity a -> f a -> Tagged s enc
sumToJSON' Options
opts ToArgs enc arity a
targs
SumEncoding
TwoElemArray ->
(forall {k} (s :: k) b. Tagged s b -> b
unTagged :: Tagged TwoElemArray enc -> enc)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall {k} (s :: k) enc arity (f :: * -> *) a.
SumToJSON' s enc arity f =>
Options -> ToArgs enc arity a -> f a -> Tagged s enc
sumToJSON' Options
opts ToArgs enc arity a
targs
SumEncoding
UntaggedValue ->
(forall {k} (s :: k) b. Tagged s b -> b
unTagged :: Tagged UntaggedValue enc -> enc)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall {k} (s :: k) enc arity (f :: * -> *) a.
SumToJSON' s enc arity f =>
Options -> ToArgs enc arity a -> f a -> Tagged s enc
sumToJSON' Options
opts ToArgs enc arity a
targs
{-# INLINE nonAllNullarySumToJSON #-}
class FromString enc where
fromString :: String -> enc
instance FromString Encoding where
fromString :: [Char] -> Encoding
fromString = forall a. ToJSON a => a -> Encoding
toEncoding
instance FromString Value where
fromString :: [Char] -> Value
fromString = Text -> Value
String forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Char] -> Text
pack
class TaggedObject enc arity f where
taggedObject :: Options -> ToArgs enc arity a
-> Key -> Key
-> f a -> enc
instance ( TaggedObject enc arity a
, TaggedObject enc arity b
) => TaggedObject enc arity (a :+: b)
where
taggedObject :: forall a.
Options -> ToArgs enc arity a -> Key -> Key -> (:+:) a b a -> enc
taggedObject Options
opts ToArgs enc arity a
targs Key
tagFieldName Key
contentsFieldName (L1 a a
x) =
forall enc arity (f :: * -> *) a.
TaggedObject enc arity f =>
Options -> ToArgs enc arity a -> Key -> Key -> f a -> enc
taggedObject Options
opts ToArgs enc arity a
targs Key
tagFieldName Key
contentsFieldName a a
x
taggedObject Options
opts ToArgs enc arity a
targs Key
tagFieldName Key
contentsFieldName (R1 b a
x) =
forall enc arity (f :: * -> *) a.
TaggedObject enc arity f =>
Options -> ToArgs enc arity a -> Key -> Key -> f a -> enc
taggedObject Options
opts ToArgs enc arity a
targs Key
tagFieldName Key
contentsFieldName b a
x
{-# INLINE taggedObject #-}
instance ( IsRecord a isRecord
, TaggedObject' enc pairs arity a isRecord
, FromPairs enc pairs
, FromString enc
, KeyValuePair enc pairs
, Constructor c
) => TaggedObject enc arity (C1 c a)
where
taggedObject :: forall a.
Options -> ToArgs enc arity a -> Key -> Key -> C1 c a a -> enc
taggedObject Options
opts ToArgs enc arity a
targs Key
tagFieldName Key
contentsFieldName =
forall enc pairs. FromPairs enc pairs => pairs -> enc
fromPairs forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Monoid a => a -> a -> a
mappend pairs
tag forall b c a. (b -> c) -> (a -> b) -> a -> c
. C1 c a a -> pairs
contents
where
tag :: pairs
tag = Key
tagFieldName forall v kv. KeyValuePair v kv => Key -> v -> kv
`pair`
(forall enc. FromString enc => [Char] -> enc
fromString (Options -> [Char] -> [Char]
constructorTagModifier Options
opts (forall {k} (c :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *)
(f :: k1 -> *) (a :: k1).
Constructor c =>
t c f a -> [Char]
conName (forall a. HasCallStack => a
undefined :: t c a p)))
:: enc)
contents :: C1 c a a -> pairs
contents =
(forall {k} (s :: k) b. Tagged s b -> b
unTagged :: Tagged isRecord pairs -> pairs) forall b c a. (b -> c) -> (a -> b) -> a -> c
.
forall {k} enc pairs arity (f :: * -> *) (isRecord :: k) a.
TaggedObject' enc pairs arity f isRecord =>
Options
-> ToArgs enc arity a -> Key -> f a -> Tagged isRecord pairs
taggedObject' Options
opts ToArgs enc arity a
targs Key
contentsFieldName forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k i (c :: Meta) (f :: k -> *) (p :: k). M1 i c f p -> f p
unM1
{-# INLINE taggedObject #-}
class TaggedObject' enc pairs arity f isRecord where
taggedObject' :: Options -> ToArgs enc arity a
-> Key -> f a -> Tagged isRecord pairs
instance ( GToJSON' enc arity f
, KeyValuePair enc pairs
) => TaggedObject' enc pairs arity f False
where
taggedObject' :: forall a.
Options -> ToArgs enc arity a -> Key -> f a -> Tagged False pairs
taggedObject' Options
opts ToArgs enc arity a
targs Key
contentsFieldName =
forall {k} (s :: k) b. b -> Tagged s b
Tagged forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Key
contentsFieldName forall v kv. KeyValuePair v kv => Key -> v -> kv
`pair`) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall enc arity (f :: * -> *) a.
GToJSON' enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
gToJSON Options
opts ToArgs enc arity a
targs
{-# INLINE taggedObject' #-}
instance {-# OVERLAPPING #-} Monoid pairs => TaggedObject' enc pairs arity U1 False where
taggedObject' :: forall a.
Options -> ToArgs enc arity a -> Key -> U1 a -> Tagged False pairs
taggedObject' Options
_ ToArgs enc arity a
_ Key
_ U1 a
_ = forall {k} (s :: k) b. b -> Tagged s b
Tagged forall a. Monoid a => a
mempty
{-# INLINE taggedObject' #-}
instance ( RecordToPairs enc pairs arity f
) => TaggedObject' enc pairs arity f True
where
taggedObject' :: forall a.
Options -> ToArgs enc arity a -> Key -> f a -> Tagged True pairs
taggedObject' Options
opts ToArgs enc arity a
targs Key
_ = forall {k} (s :: k) b. b -> Tagged s b
Tagged forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall enc pairs arity (f :: * -> *) a.
RecordToPairs enc pairs arity f =>
Options -> ToArgs enc arity a -> f a -> pairs
recordToPairs Options
opts ToArgs enc arity a
targs
{-# INLINE taggedObject' #-}
class GetConName f where
getConName :: f a -> String
instance (GetConName a, GetConName b) => GetConName (a :+: b) where
getConName :: forall (a :: k). (:+:) a b a -> [Char]
getConName (L1 a a
x) = forall {k} (f :: k -> *) (a :: k). GetConName f => f a -> [Char]
getConName a a
x
getConName (R1 b a
x) = forall {k} (f :: k -> *) (a :: k). GetConName f => f a -> [Char]
getConName b a
x
{-# INLINE getConName #-}
instance (Constructor c) => GetConName (C1 c a) where
getConName :: forall (a :: k). C1 c a a -> [Char]
getConName = forall {k} (c :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *)
(f :: k1 -> *) (a :: k1).
Constructor c =>
t c f a -> [Char]
conName
{-# INLINE getConName #-}
instance GetConName a => GetConName (D1 d a) where
getConName :: forall (a :: k). D1 d a a -> [Char]
getConName (M1 a a
x) = forall {k} (f :: k -> *) (a :: k). GetConName f => f a -> [Char]
getConName a a
x
{-# INLINE getConName #-}
data ObjectWithSingleField
data TwoElemArray
data UntaggedValue
class SumToJSON' s enc arity f where
sumToJSON' :: Options -> ToArgs enc arity a
-> f a -> Tagged s enc
instance ( SumToJSON' s enc arity a
, SumToJSON' s enc arity b
) => SumToJSON' s enc arity (a :+: b)
where
sumToJSON' :: forall a.
Options -> ToArgs enc arity a -> (:+:) a b a -> Tagged s enc
sumToJSON' Options
opts ToArgs enc arity a
targs (L1 a a
x) = forall {k} (s :: k) enc arity (f :: * -> *) a.
SumToJSON' s enc arity f =>
Options -> ToArgs enc arity a -> f a -> Tagged s enc
sumToJSON' Options
opts ToArgs enc arity a
targs a a
x
sumToJSON' Options
opts ToArgs enc arity a
targs (R1 b a
x) = forall {k} (s :: k) enc arity (f :: * -> *) a.
SumToJSON' s enc arity f =>
Options -> ToArgs enc arity a -> f a -> Tagged s enc
sumToJSON' Options
opts ToArgs enc arity a
targs b a
x
{-# INLINE sumToJSON' #-}
instance ( GToJSON' Value arity a
, ConsToJSON Value arity a
, Constructor c
) => SumToJSON' TwoElemArray Value arity (C1 c a) where
sumToJSON' :: forall a.
Options
-> ToArgs Value arity a -> C1 c a a -> Tagged TwoElemArray Value
sumToJSON' Options
opts ToArgs Value arity a
targs C1 c a a
x = forall {k} (s :: k) b. b -> Tagged s b
Tagged forall a b. (a -> b) -> a -> b
$ Array -> Value
Array forall a b. (a -> b) -> a -> b
$ forall a. (forall s. ST s (MVector s a)) -> Vector a
V.create forall a b. (a -> b) -> a -> b
$ do
MVector s Value
mv <- forall (m :: * -> *) a.
PrimMonad m =>
Int -> m (MVector (PrimState m) a)
VM.unsafeNew Int
2
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
0 forall a b. (a -> b) -> a -> b
$ Text -> Value
String forall a b. (a -> b) -> a -> b
$ [Char] -> Text
pack forall a b. (a -> b) -> a -> b
$ Options -> [Char] -> [Char]
constructorTagModifier Options
opts
forall a b. (a -> b) -> a -> b
$ forall {k} (c :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *)
(f :: k1 -> *) (a :: k1).
Constructor c =>
t c f a -> [Char]
conName (forall a. HasCallStack => a
undefined :: t c a p)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
1 forall a b. (a -> b) -> a -> b
$ forall enc arity (f :: * -> *) a.
GToJSON' enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
gToJSON Options
opts ToArgs Value arity a
targs C1 c a a
x
forall (m :: * -> *) a. Monad m => a -> m a
return MVector s Value
mv
{-# INLINE sumToJSON' #-}
instance ( GToJSON' Encoding arity a
, ConsToJSON Encoding arity a
, Constructor c
) => SumToJSON' TwoElemArray Encoding arity (C1 c a)
where
sumToJSON' :: forall a.
Options
-> ToArgs Encoding arity a
-> C1 c a a
-> Tagged TwoElemArray Encoding
sumToJSON' Options
opts ToArgs Encoding arity a
targs C1 c a a
x = forall {k} (s :: k) b. b -> Tagged s b
Tagged forall a b. (a -> b) -> a -> b
$ forall a. (a -> Encoding) -> [a] -> Encoding
E.list forall a. a -> a
id
[ forall a. ToJSON a => a -> Encoding
toEncoding (Options -> [Char] -> [Char]
constructorTagModifier Options
opts (forall {k} (c :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *)
(f :: k1 -> *) (a :: k1).
Constructor c =>
t c f a -> [Char]
conName (forall a. HasCallStack => a
undefined :: t c a p)))
, forall enc arity (f :: * -> *) a.
GToJSON' enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
gToJSON Options
opts ToArgs Encoding arity a
targs C1 c a a
x
]
{-# INLINE sumToJSON' #-}
class ConsToJSON enc arity f where
consToJSON :: Options -> ToArgs enc arity a
-> f a -> enc
class ConsToJSON' enc arity f isRecord where
consToJSON' :: Options -> ToArgs enc arity a
-> f a -> Tagged isRecord enc
instance ( IsRecord f isRecord
, ConsToJSON' enc arity f isRecord
) => ConsToJSON enc arity f
where
consToJSON :: forall a. Options -> ToArgs enc arity a -> f a -> enc
consToJSON Options
opts ToArgs enc arity a
targs =
(forall {k} (s :: k) b. Tagged s b -> b
unTagged :: Tagged isRecord enc -> enc)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall {k} enc arity (f :: * -> *) (isRecord :: k) a.
ConsToJSON' enc arity f isRecord =>
Options -> ToArgs enc arity a -> f a -> Tagged isRecord enc
consToJSON' Options
opts ToArgs enc arity a
targs
{-# INLINE consToJSON #-}
instance {-# OVERLAPPING #-}
( RecordToPairs enc pairs arity (S1 s f)
, FromPairs enc pairs
, GToJSON' enc arity f
) => ConsToJSON' enc arity (S1 s f) True
where
consToJSON' :: forall a.
Options -> ToArgs enc arity a -> S1 s f a -> Tagged True enc
consToJSON' Options
opts ToArgs enc arity a
targs
| Options -> Bool
unwrapUnaryRecords Options
opts = forall {k} (s :: k) b. b -> Tagged s b
Tagged forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall enc arity (f :: * -> *) a.
GToJSON' enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
gToJSON Options
opts ToArgs enc arity a
targs
| Bool
otherwise = forall {k} (s :: k) b. b -> Tagged s b
Tagged forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall enc pairs. FromPairs enc pairs => pairs -> enc
fromPairs forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall enc pairs arity (f :: * -> *) a.
RecordToPairs enc pairs arity f =>
Options -> ToArgs enc arity a -> f a -> pairs
recordToPairs Options
opts ToArgs enc arity a
targs
{-# INLINE consToJSON' #-}
instance ( RecordToPairs enc pairs arity f
, FromPairs enc pairs
) => ConsToJSON' enc arity f True
where
consToJSON' :: forall a. Options -> ToArgs enc arity a -> f a -> Tagged True enc
consToJSON' Options
opts ToArgs enc arity a
targs = forall {k} (s :: k) b. b -> Tagged s b
Tagged forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall enc pairs. FromPairs enc pairs => pairs -> enc
fromPairs forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall enc pairs arity (f :: * -> *) a.
RecordToPairs enc pairs arity f =>
Options -> ToArgs enc arity a -> f a -> pairs
recordToPairs Options
opts ToArgs enc arity a
targs
{-# INLINE consToJSON' #-}
instance GToJSON' enc arity f => ConsToJSON' enc arity f False where
consToJSON' :: forall a. Options -> ToArgs enc arity a -> f a -> Tagged False enc
consToJSON' Options
opts ToArgs enc arity a
targs = forall {k} (s :: k) b. b -> Tagged s b
Tagged forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall enc arity (f :: * -> *) a.
GToJSON' enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
gToJSON Options
opts ToArgs enc arity a
targs
{-# INLINE consToJSON' #-}
class RecordToPairs enc pairs arity f where
recordToPairs :: Options -> ToArgs enc arity a
-> f a -> pairs
instance ( Monoid pairs
, RecordToPairs enc pairs arity a
, RecordToPairs enc pairs arity b
) => RecordToPairs enc pairs arity (a :*: b)
where
recordToPairs :: forall a. Options -> ToArgs enc arity a -> (:*:) a b a -> pairs
recordToPairs Options
opts (ToArgs enc arity a
targs :: ToArgs enc arity p) (a a
a :*: b a
b) =
forall (f :: * -> *).
RecordToPairs enc pairs arity f =>
f a -> pairs
pairsOf a a
a forall a. Monoid a => a -> a -> a
`mappend` forall (f :: * -> *).
RecordToPairs enc pairs arity f =>
f a -> pairs
pairsOf b a
b
where
pairsOf :: (RecordToPairs enc pairs arity f) => f p -> pairs
pairsOf :: forall (f :: * -> *).
RecordToPairs enc pairs arity f =>
f a -> pairs
pairsOf = forall enc pairs arity (f :: * -> *) a.
RecordToPairs enc pairs arity f =>
Options -> ToArgs enc arity a -> f a -> pairs
recordToPairs Options
opts ToArgs enc arity a
targs
{-# INLINE recordToPairs #-}
instance ( Selector s
, GToJSON' enc arity a
, KeyValuePair enc pairs
) => RecordToPairs enc pairs arity (S1 s a)
where
recordToPairs :: forall a. Options -> ToArgs enc arity a -> S1 s a a -> pairs
recordToPairs = forall (s :: Meta) enc arity (a :: * -> *) pairs p.
(Selector s, GToJSON' enc arity a, KeyValuePair enc pairs) =>
Options -> ToArgs enc arity p -> S1 s a p -> pairs
fieldToPair
{-# INLINE recordToPairs #-}
instance {-# INCOHERENT #-}
( Selector s
, GToJSON' enc arity (K1 i (Maybe a))
, KeyValuePair enc pairs
, Monoid pairs
) => RecordToPairs enc pairs arity (S1 s (K1 i (Maybe a)))
where
recordToPairs :: forall a.
Options -> ToArgs enc arity a -> S1 s (K1 i (Maybe a)) a -> pairs
recordToPairs Options
opts ToArgs enc arity a
_ (M1 K1 i (Maybe a) a
k1) | Options -> Bool
omitNothingFields Options
opts
, K1 Maybe a
Nothing <- K1 i (Maybe a) a
k1 = forall a. Monoid a => a
mempty
recordToPairs Options
opts ToArgs enc arity a
targs M1 S s (K1 i (Maybe a)) a
m1 = forall (s :: Meta) enc arity (a :: * -> *) pairs p.
(Selector s, GToJSON' enc arity a, KeyValuePair enc pairs) =>
Options -> ToArgs enc arity p -> S1 s a p -> pairs
fieldToPair Options
opts ToArgs enc arity a
targs M1 S s (K1 i (Maybe a)) a
m1
{-# INLINE recordToPairs #-}
#if !MIN_VERSION_base(4,16,0)
instance {-# INCOHERENT #-}
( Selector s
, GToJSON' enc arity (K1 i (Maybe a))
, KeyValuePair enc pairs
, Monoid pairs
) => RecordToPairs enc pairs arity (S1 s (K1 i (Semigroup.Option a)))
where
recordToPairs opts targs = recordToPairs opts targs . unwrap
where
unwrap :: S1 s (K1 i (Semigroup.Option a)) p -> S1 s (K1 i (Maybe a)) p
unwrap (M1 (K1 (Semigroup.Option a))) = M1 (K1 a)
{-# INLINE recordToPairs #-}
#endif
fieldToPair :: (Selector s
, GToJSON' enc arity a
, KeyValuePair enc pairs)
=> Options -> ToArgs enc arity p
-> S1 s a p -> pairs
fieldToPair :: forall (s :: Meta) enc arity (a :: * -> *) pairs p.
(Selector s, GToJSON' enc arity a, KeyValuePair enc pairs) =>
Options -> ToArgs enc arity p -> S1 s a p -> pairs
fieldToPair Options
opts ToArgs enc arity p
targs S1 s a p
m1 =
let key :: Key
key = [Char] -> Key
Key.fromString forall a b. (a -> b) -> a -> b
$ Options -> [Char] -> [Char]
fieldLabelModifier Options
opts (forall {k} (s :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *)
(f :: k1 -> *) (a :: k1).
Selector s =>
t s f a -> [Char]
selName S1 s a p
m1)
value :: enc
value = forall enc arity (f :: * -> *) a.
GToJSON' enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
gToJSON Options
opts ToArgs enc arity p
targs (forall k i (c :: Meta) (f :: k -> *) (p :: k). M1 i c f p -> f p
unM1 S1 s a p
m1)
in Key
key forall v kv. KeyValuePair v kv => Key -> v -> kv
`pair` enc
value
{-# INLINE fieldToPair #-}
class WriteProduct arity f where
writeProduct :: Options
-> ToArgs Value arity a
-> VM.MVector s Value
-> Int
-> Int
-> f a
-> ST s ()
instance ( WriteProduct arity a
, WriteProduct arity b
) => WriteProduct arity (a :*: b) where
writeProduct :: forall a s.
Options
-> ToArgs Value arity a
-> MVector s Value
-> Int
-> Int
-> (:*:) a b a
-> ST s ()
writeProduct Options
opts ToArgs Value arity a
targs MVector s Value
mv Int
ix Int
len (a a
a :*: b a
b) = do
forall arity (f :: * -> *) a s.
WriteProduct arity f =>
Options
-> ToArgs Value arity a
-> MVector s Value
-> Int
-> Int
-> f a
-> ST s ()
writeProduct Options
opts ToArgs Value arity a
targs MVector s Value
mv Int
ix Int
lenL a a
a
forall arity (f :: * -> *) a s.
WriteProduct arity f =>
Options
-> ToArgs Value arity a
-> MVector s Value
-> Int
-> Int
-> f a
-> ST s ()
writeProduct Options
opts ToArgs Value arity a
targs MVector s Value
mv Int
ixR Int
lenR b a
b
where
lenL :: Int
lenL = Int
len forall a. Bits a => a -> Int -> a
`unsafeShiftR` Int
1
lenR :: Int
lenR = Int
len forall a. Num a => a -> a -> a
- Int
lenL
ixR :: Int
ixR = Int
ix forall a. Num a => a -> a -> a
+ Int
lenL
{-# INLINE writeProduct #-}
instance {-# OVERLAPPABLE #-} (GToJSON' Value arity a) => WriteProduct arity a where
writeProduct :: forall a s.
Options
-> ToArgs Value arity a
-> MVector s Value
-> Int
-> Int
-> a a
-> ST s ()
writeProduct Options
opts ToArgs Value arity a
targs MVector s Value
mv Int
ix Int
_ =
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
ix forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall enc arity (f :: * -> *) a.
GToJSON' enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
gToJSON Options
opts ToArgs Value arity a
targs
{-# INLINE writeProduct #-}
class EncodeProduct arity f where
encodeProduct :: Options -> ToArgs Encoding arity a
-> f a -> Encoding' E.InArray
instance ( EncodeProduct arity a
, EncodeProduct arity b
) => EncodeProduct arity (a :*: b) where
encodeProduct :: forall a.
Options
-> ToArgs Encoding arity a -> (:*:) a b a -> Encoding' InArray
encodeProduct Options
opts ToArgs Encoding arity a
targs (a a
a :*: b a
b) | Options -> Bool
omitNothingFields Options
opts =
forall a. [Encoding' a] -> Encoding' a
E.econcat forall a b. (a -> b) -> a -> b
$ forall a. a -> [a] -> [a]
intersperse forall a. Encoding' a
E.comma forall a b. (a -> b) -> a -> b
$
forall a. (a -> Bool) -> [a] -> [a]
filter (Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Encoding' a -> Bool
E.nullEncoding)
[forall arity (f :: * -> *) a.
EncodeProduct arity f =>
Options -> ToArgs Encoding arity a -> f a -> Encoding' InArray
encodeProduct Options
opts ToArgs Encoding arity a
targs a a
a, forall arity (f :: * -> *) a.
EncodeProduct arity f =>
Options -> ToArgs Encoding arity a -> f a -> Encoding' InArray
encodeProduct Options
opts ToArgs Encoding arity a
targs b a
b]
encodeProduct Options
opts ToArgs Encoding arity a
targs (a a
a :*: b a
b) =
forall arity (f :: * -> *) a.
EncodeProduct arity f =>
Options -> ToArgs Encoding arity a -> f a -> Encoding' InArray
encodeProduct Options
opts ToArgs Encoding arity a
targs a a
a forall a b. Encoding' a -> Encoding' b -> Encoding' InArray
>*<
forall arity (f :: * -> *) a.
EncodeProduct arity f =>
Options -> ToArgs Encoding arity a -> f a -> Encoding' InArray
encodeProduct Options
opts ToArgs Encoding arity a
targs b a
b
{-# INLINE encodeProduct #-}
instance {-# OVERLAPPABLE #-} (GToJSON' Encoding arity a) => EncodeProduct arity a where
encodeProduct :: forall a.
Options -> ToArgs Encoding arity a -> a a -> Encoding' InArray
encodeProduct Options
opts ToArgs Encoding arity a
targs a a
a = forall a b. Encoding' a -> Encoding' b
E.retagEncoding forall a b. (a -> b) -> a -> b
$ forall enc arity (f :: * -> *) a.
GToJSON' enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
gToJSON Options
opts ToArgs Encoding arity a
targs a a
a
{-# INLINE encodeProduct #-}
instance ( GToJSON' enc arity a
, ConsToJSON enc arity a
, FromPairs enc pairs
, KeyValuePair enc pairs
, Constructor c
) => SumToJSON' ObjectWithSingleField enc arity (C1 c a)
where
sumToJSON' :: forall a.
Options
-> ToArgs enc arity a
-> C1 c a a
-> Tagged ObjectWithSingleField enc
sumToJSON' Options
opts ToArgs enc arity a
targs =
forall {k} (s :: k) b. b -> Tagged s b
Tagged forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall enc pairs. FromPairs enc pairs => pairs -> enc
fromPairs forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Key
typ forall v kv. KeyValuePair v kv => Key -> v -> kv
`pair`) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall enc arity (f :: * -> *) a.
GToJSON' enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
gToJSON Options
opts ToArgs enc arity a
targs
where
typ :: Key
typ = [Char] -> Key
Key.fromString forall a b. (a -> b) -> a -> b
$ Options -> [Char] -> [Char]
constructorTagModifier Options
opts forall a b. (a -> b) -> a -> b
$
forall {k} (c :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *)
(f :: k1 -> *) (a :: k1).
Constructor c =>
t c f a -> [Char]
conName (forall a. HasCallStack => a
undefined :: t c a p)
{-# INLINE sumToJSON' #-}
instance {-# OVERLAPPABLE #-}
( ConsToJSON enc arity a
) => SumToJSON' UntaggedValue enc arity (C1 c a)
where
sumToJSON' :: forall a.
Options
-> ToArgs enc arity a -> C1 c a a -> Tagged UntaggedValue enc
sumToJSON' Options
opts ToArgs enc arity a
targs = forall {k} (s :: k) b. b -> Tagged s b
Tagged forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall enc arity (f :: * -> *) a.
GToJSON' enc arity f =>
Options -> ToArgs enc arity a -> f a -> enc
gToJSON Options
opts ToArgs enc arity a
targs
{-# INLINE sumToJSON' #-}
instance {-# OVERLAPPING #-}
( Constructor c
, FromString enc
) => SumToJSON' UntaggedValue enc arity (C1 c U1)
where
sumToJSON' :: forall a.
Options
-> ToArgs enc arity a -> C1 c U1 a -> Tagged UntaggedValue enc
sumToJSON' Options
opts ToArgs enc arity a
_ C1 c U1 a
_ = forall {k} (s :: k) b. b -> Tagged s b
Tagged forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall enc. FromString enc => [Char] -> enc
fromString forall a b. (a -> b) -> a -> b
$
Options -> [Char] -> [Char]
constructorTagModifier Options
opts forall a b. (a -> b) -> a -> b
$ forall {k} (c :: k) k1 (t :: k -> (k1 -> *) -> k1 -> *)
(f :: k1 -> *) (a :: k1).
Constructor c =>
t c f a -> [Char]
conName (forall a. HasCallStack => a
undefined :: t c U1 p)
{-# INLINE sumToJSON' #-}
instance ToJSON2 Const where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> Const a b
-> Value
liftToJSON2 a -> Value
t [a] -> Value
_ b -> Value
_ [b] -> Value
_ (Const a
x) = a -> Value
t a
x
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> Const a b
-> Encoding
liftToEncoding2 a -> Encoding
t [a] -> Encoding
_ b -> Encoding
_ [b] -> Encoding
_ (Const a
x) = a -> Encoding
t a
x
instance ToJSON a => ToJSON1 (Const a) where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Const a a -> Value
liftToJSON a -> Value
_ [a] -> Value
_ (Const a
x) = forall a. ToJSON a => a -> Value
toJSON a
x
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Const a a -> Encoding
liftToEncoding a -> Encoding
_ [a] -> Encoding
_ (Const a
x) = forall a. ToJSON a => a -> Encoding
toEncoding a
x
instance ToJSON a => ToJSON (Const a b) where
toJSON :: Const a b -> Value
toJSON (Const a
x) = forall a. ToJSON a => a -> Value
toJSON a
x
toEncoding :: Const a b -> Encoding
toEncoding (Const a
x) = forall a. ToJSON a => a -> Encoding
toEncoding a
x
instance (ToJSON a, ToJSONKey a) => ToJSONKey (Const a b) where
toJSONKey :: ToJSONKeyFunction (Const a b)
toJSONKey = forall (f :: * -> *) a' a.
Contravariant f =>
(a' -> a) -> f a -> f a'
contramap forall {k} a (b :: k). Const a b -> a
getConst forall a. ToJSONKey a => ToJSONKeyFunction a
toJSONKey
instance ToJSON1 Maybe where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Maybe a -> Value
liftToJSON a -> Value
t [a] -> Value
_ (Just a
a) = a -> Value
t a
a
liftToJSON a -> Value
_ [a] -> Value
_ Maybe a
Nothing = Value
Null
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Maybe a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
_ (Just a
a) = a -> Encoding
t a
a
liftToEncoding a -> Encoding
_ [a] -> Encoding
_ Maybe a
Nothing = Encoding
E.null_
instance (ToJSON a) => ToJSON (Maybe a) where
toJSON :: Maybe a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: Maybe a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSON2 Either where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> Either a b
-> Value
liftToJSON2 a -> Value
toA [a] -> Value
_ b -> Value
_toB [b] -> Value
_ (Left a
a) = Object -> Value
Object forall a b. (a -> b) -> a -> b
$ forall v. Key -> v -> KeyMap v
KM.singleton Key
"Left" (a -> Value
toA a
a)
liftToJSON2 a -> Value
_toA [a] -> Value
_ b -> Value
toB [b] -> Value
_ (Right b
b) = Object -> Value
Object forall a b. (a -> b) -> a -> b
$ forall v. Key -> v -> KeyMap v
KM.singleton Key
"Right" (b -> Value
toB b
b)
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> Either a b
-> Encoding
liftToEncoding2 a -> Encoding
toA [a] -> Encoding
_ b -> Encoding
_toB [b] -> Encoding
_ (Left a
a) = Series -> Encoding
E.pairs forall a b. (a -> b) -> a -> b
$ Key -> Encoding -> Series
E.pair Key
"Left" forall a b. (a -> b) -> a -> b
$ a -> Encoding
toA a
a
liftToEncoding2 a -> Encoding
_toA [a] -> Encoding
_ b -> Encoding
toB [b] -> Encoding
_ (Right b
b) = Series -> Encoding
E.pairs forall a b. (a -> b) -> a -> b
$ Key -> Encoding -> Series
E.pair Key
"Right" forall a b. (a -> b) -> a -> b
$ b -> Encoding
toB b
b
instance (ToJSON a) => ToJSON1 (Either a) where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Either a a -> Value
liftToJSON = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Either a a -> Encoding
liftToEncoding = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
instance (ToJSON a, ToJSON b) => ToJSON (Either a b) where
toJSON :: Either a b -> Value
toJSON = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Value
toJSON2
toEncoding :: Either a b -> Encoding
toEncoding = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Encoding
toEncoding2
instance ToJSON Void where
toJSON :: Void -> Value
toJSON = forall a. Void -> a
absurd
toEncoding :: Void -> Encoding
toEncoding = forall a. Void -> a
absurd
instance ToJSON Bool where
toJSON :: Bool -> Value
toJSON = Bool -> Value
Bool
toEncoding :: Bool -> Encoding
toEncoding = Bool -> Encoding
E.bool
instance ToJSONKey Bool where
toJSONKey :: ToJSONKeyFunction Bool
toJSONKey = forall a. (a -> Text) -> ToJSONKeyFunction a
toJSONKeyText forall a b. (a -> b) -> a -> b
$ \Bool
x -> if Bool
x then Text
"true" else Text
"false"
instance ToJSON Ordering where
toJSON :: Ordering -> Value
toJSON = forall a. ToJSON a => a -> Value
toJSON forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ordering -> Text
orderingToText
toEncoding :: Ordering -> Encoding
toEncoding = forall a. ToJSON a => a -> Encoding
toEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ordering -> Text
orderingToText
orderingToText :: Ordering -> T.Text
orderingToText :: Ordering -> Text
orderingToText Ordering
o = case Ordering
o of
Ordering
LT -> Text
"LT"
Ordering
EQ -> Text
"EQ"
Ordering
GT -> Text
"GT"
instance ToJSON () where
toJSON :: () -> Value
toJSON ()
_ = Value
emptyArray
toEncoding :: () -> Encoding
toEncoding ()
_ = Encoding
emptyArray_
instance ToJSON Char where
toJSON :: Char -> Value
toJSON = Text -> Value
String forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char -> Text
T.singleton
toJSONList :: [Char] -> Value
toJSONList = Text -> Value
String forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Char] -> Text
T.pack
toEncoding :: Char -> Encoding
toEncoding = forall a. [Char] -> Encoding' a
E.string forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. a -> [a] -> [a]
:[])
toEncodingList :: [Char] -> Encoding
toEncodingList = forall a. [Char] -> Encoding' a
E.string
instance ToJSON Double where
toJSON :: Double -> Value
toJSON = forall a. RealFloat a => a -> Value
realFloatToJSON
toEncoding :: Double -> Encoding
toEncoding = Double -> Encoding
E.double
instance ToJSONKey Double where
toJSONKey :: ToJSONKeyFunction Double
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. Double -> Encoding' a
E.doubleText
instance ToJSON Number where
toJSON :: Number -> Value
toJSON (D Double
d) = forall a. ToJSON a => a -> Value
toJSON Double
d
toJSON (I Integer
i) = forall a. ToJSON a => a -> Value
toJSON Integer
i
toEncoding :: Number -> Encoding
toEncoding (D Double
d) = forall a. ToJSON a => a -> Encoding
toEncoding Double
d
toEncoding (I Integer
i) = forall a. ToJSON a => a -> Encoding
toEncoding Integer
i
instance ToJSON Float where
toJSON :: Float -> Value
toJSON = forall a. RealFloat a => a -> Value
realFloatToJSON
toEncoding :: Float -> Encoding
toEncoding = Float -> Encoding
E.float
instance ToJSONKey Float where
toJSONKey :: ToJSONKeyFunction Float
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. Float -> Encoding' a
E.floatText
instance (ToJSON a, Integral a) => ToJSON (Ratio a) where
toJSON :: Ratio a -> Value
toJSON Ratio a
r = [Pair] -> Value
object [ Key
"numerator" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall a. Ratio a -> a
numerator Ratio a
r
, Key
"denominator" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall a. Ratio a -> a
denominator Ratio a
r
]
toEncoding :: Ratio a -> Encoding
toEncoding Ratio a
r = Series -> Encoding
E.pairs forall a b. (a -> b) -> a -> b
$
Key
"numerator" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall a. Ratio a -> a
numerator Ratio a
r forall a. Semigroup a => a -> a -> a
<>
Key
"denominator" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall a. Ratio a -> a
denominator Ratio a
r
instance HasResolution a => ToJSON (Fixed a) where
toJSON :: Fixed a -> Value
toJSON = Scientific -> Value
Number forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Real a, Fractional b) => a -> b
realToFrac
toEncoding :: Fixed a -> Encoding
toEncoding = Scientific -> Encoding
E.scientific forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Real a, Fractional b) => a -> b
realToFrac
instance HasResolution a => ToJSONKey (Fixed a) where
toJSONKey :: ToJSONKeyFunction (Fixed a)
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc (forall a. Scientific -> Encoding' a
E.scientificText forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Real a, Fractional b) => a -> b
realToFrac)
instance ToJSON Int where
toJSON :: Int -> Value
toJSON = Scientific -> Value
Number forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral
toEncoding :: Int -> Encoding
toEncoding = Int -> Encoding
E.int
instance ToJSONKey Int where
toJSONKey :: ToJSONKeyFunction Int
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. Int -> Encoding' a
E.intText
instance ToJSON Integer where
toJSON :: Integer -> Value
toJSON = Scientific -> Value
Number forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Num a => Integer -> a
fromInteger
toEncoding :: Integer -> Encoding
toEncoding = Integer -> Encoding
E.integer
instance ToJSONKey Integer where
toJSONKey :: ToJSONKeyFunction Integer
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. Integer -> Encoding' a
E.integerText
instance ToJSON Natural where
toJSON :: Natural -> Value
toJSON = forall a. ToJSON a => a -> Value
toJSON forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Integral a => a -> Integer
toInteger
toEncoding :: Natural -> Encoding
toEncoding = forall a. ToJSON a => a -> Encoding
toEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Integral a => a -> Integer
toInteger
instance ToJSONKey Natural where
toJSONKey :: ToJSONKeyFunction Natural
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc (forall a. Integer -> Encoding' a
E.integerText forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Integral a => a -> Integer
toInteger)
instance ToJSON Int8 where
toJSON :: Int8 -> Value
toJSON = Scientific -> Value
Number forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral
toEncoding :: Int8 -> Encoding
toEncoding = Int8 -> Encoding
E.int8
instance ToJSONKey Int8 where
toJSONKey :: ToJSONKeyFunction Int8
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. Int8 -> Encoding' a
E.int8Text
instance ToJSON Int16 where
toJSON :: Int16 -> Value
toJSON = Scientific -> Value
Number forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral
toEncoding :: Int16 -> Encoding
toEncoding = Int16 -> Encoding
E.int16
instance ToJSONKey Int16 where
toJSONKey :: ToJSONKeyFunction Int16
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. Int16 -> Encoding' a
E.int16Text
instance ToJSON Int32 where
toJSON :: Int32 -> Value
toJSON = Scientific -> Value
Number forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral
toEncoding :: Int32 -> Encoding
toEncoding = Int32 -> Encoding
E.int32
instance ToJSONKey Int32 where
toJSONKey :: ToJSONKeyFunction Int32
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. Int32 -> Encoding' a
E.int32Text
instance ToJSON Int64 where
toJSON :: Int64 -> Value
toJSON = Scientific -> Value
Number forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral
toEncoding :: Int64 -> Encoding
toEncoding = Int64 -> Encoding
E.int64
instance ToJSONKey Int64 where
toJSONKey :: ToJSONKeyFunction Int64
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. Int64 -> Encoding' a
E.int64Text
instance ToJSON Word where
toJSON :: Word -> Value
toJSON = Scientific -> Value
Number forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral
toEncoding :: Word -> Encoding
toEncoding = Word -> Encoding
E.word
instance ToJSONKey Word where
toJSONKey :: ToJSONKeyFunction Word
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. Word -> Encoding' a
E.wordText
instance ToJSON Word8 where
toJSON :: Word8 -> Value
toJSON = Scientific -> Value
Number forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral
toEncoding :: Word8 -> Encoding
toEncoding = Word8 -> Encoding
E.word8
instance ToJSONKey Word8 where
toJSONKey :: ToJSONKeyFunction Word8
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. Word8 -> Encoding' a
E.word8Text
instance ToJSON Word16 where
toJSON :: Word16 -> Value
toJSON = Scientific -> Value
Number forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral
toEncoding :: Word16 -> Encoding
toEncoding = Word16 -> Encoding
E.word16
instance ToJSONKey Word16 where
toJSONKey :: ToJSONKeyFunction Word16
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. Word16 -> Encoding' a
E.word16Text
instance ToJSON Word32 where
toJSON :: Word32 -> Value
toJSON = Scientific -> Value
Number forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral
toEncoding :: Word32 -> Encoding
toEncoding = Word32 -> Encoding
E.word32
instance ToJSONKey Word32 where
toJSONKey :: ToJSONKeyFunction Word32
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. Word32 -> Encoding' a
E.word32Text
instance ToJSON Word64 where
toJSON :: Word64 -> Value
toJSON = Scientific -> Value
Number forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral
toEncoding :: Word64 -> Encoding
toEncoding = Word64 -> Encoding
E.word64
instance ToJSONKey Word64 where
toJSONKey :: ToJSONKeyFunction Word64
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. Word64 -> Encoding' a
E.word64Text
instance ToJSON CTime where
toJSON :: CTime -> Value
toJSON (CTime Int64
i) = forall a. ToJSON a => a -> Value
toJSON Int64
i
toEncoding :: CTime -> Encoding
toEncoding (CTime Int64
i) = forall a. ToJSON a => a -> Encoding
toEncoding Int64
i
instance ToJSON Text where
toJSON :: Text -> Value
toJSON = Text -> Value
String
toEncoding :: Text -> Encoding
toEncoding = forall a. Text -> Encoding' a
E.text
instance ToJSONKey Text where
toJSONKey :: ToJSONKeyFunction Text
toJSONKey = forall a. (a -> Text) -> ToJSONKeyFunction a
toJSONKeyText forall a. a -> a
id
instance ToJSON LT.Text where
toJSON :: Text -> Value
toJSON = Text -> Value
String forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Text
LT.toStrict
toEncoding :: Text -> Encoding
toEncoding = forall a. Text -> Encoding' a
E.lazyText
instance ToJSONKey LT.Text where
toJSONKey :: ToJSONKeyFunction Text
toJSONKey = forall a. (a -> Text) -> ToJSONKeyFunction a
toJSONKeyText (Text -> Text
LT.toStrict)
instance ToJSON ST.ShortText where
toJSON :: ShortText -> Value
toJSON = Text -> Value
String forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShortText -> Text
ST.toText
toEncoding :: ShortText -> Encoding
toEncoding = forall a. ShortText -> Encoding' a
E.shortText
instance ToJSONKey ST.ShortText where
toJSONKey :: ToJSONKeyFunction ShortText
toJSONKey = forall a. (a -> Key) -> (a -> Encoding' Key) -> ToJSONKeyFunction a
ToJSONKeyText ShortText -> Key
Key.fromShortText forall a. ShortText -> Encoding' a
E.shortText
instance ToJSON Version where
toJSON :: Version -> Value
toJSON = forall a. ToJSON a => a -> Value
toJSON forall b c a. (b -> c) -> (a -> b) -> a -> c
. Version -> [Char]
showVersion
toEncoding :: Version -> Encoding
toEncoding = forall a. ToJSON a => a -> Encoding
toEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. Version -> [Char]
showVersion
instance ToJSONKey Version where
toJSONKey :: ToJSONKeyFunction Version
toJSONKey = forall a. (a -> Key) -> ToJSONKeyFunction a
toJSONKeyKey ([Char] -> Key
Key.fromString forall b c a. (b -> c) -> (a -> b) -> a -> c
. Version -> [Char]
showVersion)
instance ToJSON1 NonEmpty where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> NonEmpty a -> Value
liftToJSON a -> Value
t [a] -> Value
_ = forall a. (a -> Value) -> [a] -> Value
listValue a -> Value
t forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. NonEmpty a -> [a]
NE.toList
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> NonEmpty a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
_ = forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding a -> Encoding
t forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. NonEmpty a -> [a]
NE.toList
instance (ToJSON a) => ToJSON (NonEmpty a) where
toJSON :: NonEmpty a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: NonEmpty a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSON Scientific where
toJSON :: Scientific -> Value
toJSON = Scientific -> Value
Number
toEncoding :: Scientific -> Encoding
toEncoding = Scientific -> Encoding
E.scientific
instance ToJSONKey Scientific where
toJSONKey :: ToJSONKeyFunction Scientific
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. Scientific -> Encoding' a
E.scientificText
instance ToJSON1 DList.DList where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> DList a -> Value
liftToJSON a -> Value
t [a] -> Value
_ = forall a. (a -> Value) -> [a] -> Value
listValue a -> Value
t forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) a. Foldable t => t a -> [a]
toList
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> DList a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
_ = forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding a -> Encoding
t forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) a. Foldable t => t a -> [a]
toList
instance (ToJSON a) => ToJSON (DList.DList a) where
toJSON :: DList a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: DList a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
#if MIN_VERSION_dlist(1,0,0)
instance ToJSON1 DNE.DNonEmpty where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> DNonEmpty a -> Value
liftToJSON a -> Value
t [a] -> Value
_ = forall a. (a -> Value) -> [a] -> Value
listValue a -> Value
t forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. DNonEmpty a -> [a]
DNE.toList
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> DNonEmpty a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
_ = forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding a -> Encoding
t forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. DNonEmpty a -> [a]
DNE.toList
instance (ToJSON a) => ToJSON (DNE.DNonEmpty a) where
toJSON :: DNonEmpty a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: DNonEmpty a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
#endif
instance ToJSON1 Solo where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Solo a -> Value
liftToJSON a -> Value
t [a] -> Value
_ (Solo a
a) = a -> Value
t a
a
liftToJSONList :: forall a. (a -> Value) -> ([a] -> Value) -> [Solo a] -> Value
liftToJSONList a -> Value
_ [a] -> Value
tl [Solo a]
xs = [a] -> Value
tl (forall a b. (a -> b) -> [a] -> [b]
map forall a. Solo a -> a
getSolo [Solo a]
xs)
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Solo a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
_ (Solo a
a) = a -> Encoding
t a
a
liftToEncodingList :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> [Solo a] -> Encoding
liftToEncodingList a -> Encoding
_ [a] -> Encoding
tl [Solo a]
xs = [a] -> Encoding
tl (forall a b. (a -> b) -> [a] -> [b]
map forall a. Solo a -> a
getSolo [Solo a]
xs)
instance (ToJSON a) => ToJSON (Solo a) where
toJSON :: Solo a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toJSONList :: [Solo a] -> Value
toJSONList = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> [f a] -> Value
liftToJSONList forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
toEncoding :: Solo a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
toEncodingList :: [Solo a] -> Encoding
toEncodingList = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> [f a] -> Encoding
liftToEncodingList forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
instance (ToJSONKey a) => ToJSONKey (Solo a) where
toJSONKey :: ToJSONKeyFunction (Solo a)
toJSONKey = forall a' a.
(a' -> a) -> ToJSONKeyFunction a -> ToJSONKeyFunction a'
contramapToJSONKeyFunction forall a. Solo a -> a
getSolo forall a. ToJSONKey a => ToJSONKeyFunction a
toJSONKey
toJSONKeyList :: ToJSONKeyFunction [Solo a]
toJSONKeyList = forall a' a.
(a' -> a) -> ToJSONKeyFunction a -> ToJSONKeyFunction a'
contramapToJSONKeyFunction (forall a b. (a -> b) -> [a] -> [b]
map forall a. Solo a -> a
getSolo) forall a. ToJSONKey a => ToJSONKeyFunction [a]
toJSONKeyList
instance ToJSON1 Identity where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Identity a -> Value
liftToJSON a -> Value
t [a] -> Value
_ (Identity a
a) = a -> Value
t a
a
liftToJSONList :: forall a. (a -> Value) -> ([a] -> Value) -> [Identity a] -> Value
liftToJSONList a -> Value
_ [a] -> Value
tl [Identity a]
xs = [a] -> Value
tl (forall a b. (a -> b) -> [a] -> [b]
map forall a. Identity a -> a
runIdentity [Identity a]
xs)
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Identity a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
_ (Identity a
a) = a -> Encoding
t a
a
liftToEncodingList :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> [Identity a] -> Encoding
liftToEncodingList a -> Encoding
_ [a] -> Encoding
tl [Identity a]
xs = [a] -> Encoding
tl (forall a b. (a -> b) -> [a] -> [b]
map forall a. Identity a -> a
runIdentity [Identity a]
xs)
instance (ToJSON a) => ToJSON (Identity a) where
toJSON :: Identity a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toJSONList :: [Identity a] -> Value
toJSONList = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> [f a] -> Value
liftToJSONList forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
toEncoding :: Identity a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
toEncodingList :: [Identity a] -> Encoding
toEncodingList = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> [f a] -> Encoding
liftToEncodingList forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
instance (ToJSONKey a) => ToJSONKey (Identity a) where
toJSONKey :: ToJSONKeyFunction (Identity a)
toJSONKey = forall a' a.
(a' -> a) -> ToJSONKeyFunction a -> ToJSONKeyFunction a'
contramapToJSONKeyFunction forall a. Identity a -> a
runIdentity forall a. ToJSONKey a => ToJSONKeyFunction a
toJSONKey
toJSONKeyList :: ToJSONKeyFunction [Identity a]
toJSONKeyList = forall a' a.
(a' -> a) -> ToJSONKeyFunction a -> ToJSONKeyFunction a'
contramapToJSONKeyFunction (forall a b. (a -> b) -> [a] -> [b]
map forall a. Identity a -> a
runIdentity) forall a. ToJSONKey a => ToJSONKeyFunction [a]
toJSONKeyList
instance (ToJSON1 f, ToJSON1 g) => ToJSON1 (Compose f g) where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Compose f g a -> Value
liftToJSON a -> Value
tv [a] -> Value
tvl (Compose f (g a)
x) = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON g a -> Value
g [g a] -> Value
gl f (g a)
x
where
g :: g a -> Value
g = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON a -> Value
tv [a] -> Value
tvl
gl :: [g a] -> Value
gl = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> [f a] -> Value
liftToJSONList a -> Value
tv [a] -> Value
tvl
liftToJSONList :: forall a.
(a -> Value) -> ([a] -> Value) -> [Compose f g a] -> Value
liftToJSONList a -> Value
te [a] -> Value
tel [Compose f g a]
xs = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> [f a] -> Value
liftToJSONList g a -> Value
g [g a] -> Value
gl (forall a b. (a -> b) -> [a] -> [b]
map forall {k1} {k2} (f :: k1 -> *) (g :: k2 -> k1) (a :: k2).
Compose f g a -> f (g a)
getCompose [Compose f g a]
xs)
where
g :: g a -> Value
g = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON a -> Value
te [a] -> Value
tel
gl :: [g a] -> Value
gl = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> [f a] -> Value
liftToJSONList a -> Value
te [a] -> Value
tel
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Compose f g a -> Encoding
liftToEncoding a -> Encoding
te [a] -> Encoding
tel (Compose f (g a)
x) = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding g a -> Encoding
g [g a] -> Encoding
gl f (g a)
x
where
g :: g a -> Encoding
g = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding a -> Encoding
te [a] -> Encoding
tel
gl :: [g a] -> Encoding
gl = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> [f a] -> Encoding
liftToEncodingList a -> Encoding
te [a] -> Encoding
tel
liftToEncodingList :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> [Compose f g a] -> Encoding
liftToEncodingList a -> Encoding
te [a] -> Encoding
tel [Compose f g a]
xs = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> [f a] -> Encoding
liftToEncodingList g a -> Encoding
g [g a] -> Encoding
gl (forall a b. (a -> b) -> [a] -> [b]
map forall {k1} {k2} (f :: k1 -> *) (g :: k2 -> k1) (a :: k2).
Compose f g a -> f (g a)
getCompose [Compose f g a]
xs)
where
g :: g a -> Encoding
g = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding a -> Encoding
te [a] -> Encoding
tel
gl :: [g a] -> Encoding
gl = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> [f a] -> Encoding
liftToEncodingList a -> Encoding
te [a] -> Encoding
tel
instance (ToJSON1 f, ToJSON1 g, ToJSON a) => ToJSON (Compose f g a) where
toJSON :: Compose f g a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toJSONList :: [Compose f g a] -> Value
toJSONList = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> [f a] -> Value
liftToJSONList forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
toEncoding :: Compose f g a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
toEncodingList :: [Compose f g a] -> Encoding
toEncodingList = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> [f a] -> Encoding
liftToEncodingList forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
instance (ToJSON1 f, ToJSON1 g) => ToJSON1 (Product f g) where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Product f g a -> Value
liftToJSON a -> Value
tv [a] -> Value
tvl (Pair f a
x g a
y) = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 f a -> Value
tx [f a] -> Value
txl g a -> Value
ty [g a] -> Value
tyl (f a
x, g a
y)
where
tx :: f a -> Value
tx = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON a -> Value
tv [a] -> Value
tvl
txl :: [f a] -> Value
txl = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> [f a] -> Value
liftToJSONList a -> Value
tv [a] -> Value
tvl
ty :: g a -> Value
ty = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON a -> Value
tv [a] -> Value
tvl
tyl :: [g a] -> Value
tyl = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> [f a] -> Value
liftToJSONList a -> Value
tv [a] -> Value
tvl
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Product f g a -> Encoding
liftToEncoding a -> Encoding
te [a] -> Encoding
tel (Pair f a
x g a
y) = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 f a -> Encoding
tx [f a] -> Encoding
txl g a -> Encoding
ty [g a] -> Encoding
tyl (f a
x, g a
y)
where
tx :: f a -> Encoding
tx = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding a -> Encoding
te [a] -> Encoding
tel
txl :: [f a] -> Encoding
txl = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> [f a] -> Encoding
liftToEncodingList a -> Encoding
te [a] -> Encoding
tel
ty :: g a -> Encoding
ty = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding a -> Encoding
te [a] -> Encoding
tel
tyl :: [g a] -> Encoding
tyl = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> [f a] -> Encoding
liftToEncodingList a -> Encoding
te [a] -> Encoding
tel
instance (ToJSON1 f, ToJSON1 g, ToJSON a) => ToJSON (Product f g a) where
toJSON :: Product f g a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: Product f g a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance (ToJSON1 f, ToJSON1 g) => ToJSON1 (Sum f g) where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Sum f g a -> Value
liftToJSON a -> Value
tv [a] -> Value
tvl (InL f a
x) = Object -> Value
Object forall a b. (a -> b) -> a -> b
$ forall v. Key -> v -> KeyMap v
KM.singleton Key
"InL" (forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON a -> Value
tv [a] -> Value
tvl f a
x)
liftToJSON a -> Value
tv [a] -> Value
tvl (InR g a
y) = Object -> Value
Object forall a b. (a -> b) -> a -> b
$ forall v. Key -> v -> KeyMap v
KM.singleton Key
"InR" (forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON a -> Value
tv [a] -> Value
tvl g a
y)
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Sum f g a -> Encoding
liftToEncoding a -> Encoding
te [a] -> Encoding
tel (InL f a
x) = Series -> Encoding
E.pairs forall a b. (a -> b) -> a -> b
$ Key -> Encoding -> Series
E.pair Key
"InL" forall a b. (a -> b) -> a -> b
$ forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding a -> Encoding
te [a] -> Encoding
tel f a
x
liftToEncoding a -> Encoding
te [a] -> Encoding
tel (InR g a
y) = Series -> Encoding
E.pairs forall a b. (a -> b) -> a -> b
$ Key -> Encoding -> Series
E.pair Key
"InR" forall a b. (a -> b) -> a -> b
$ forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding a -> Encoding
te [a] -> Encoding
tel g a
y
instance (ToJSON1 f, ToJSON1 g, ToJSON a) => ToJSON (Sum f g a) where
toJSON :: Sum f g a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: Sum f g a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSON1 Seq.Seq where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Seq a -> Value
liftToJSON a -> Value
t [a] -> Value
_ = forall a. (a -> Value) -> [a] -> Value
listValue a -> Value
t forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) a. Foldable t => t a -> [a]
toList
liftToEncoding :: forall a. (a -> Encoding) -> ([a] -> Encoding) -> Seq a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
_ = forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding a -> Encoding
t forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) a. Foldable t => t a -> [a]
toList
instance (ToJSON a) => ToJSON (Seq.Seq a) where
toJSON :: Seq a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: Seq a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSON1 Set.Set where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Set a -> Value
liftToJSON a -> Value
t [a] -> Value
_ = forall a. (a -> Value) -> [a] -> Value
listValue a -> Value
t forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Set a -> [a]
Set.toList
liftToEncoding :: forall a. (a -> Encoding) -> ([a] -> Encoding) -> Set a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
_ = forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding a -> Encoding
t forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Set a -> [a]
Set.toList
instance (ToJSON a) => ToJSON (Set.Set a) where
toJSON :: Set a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: Set a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSON IntSet.IntSet where
toJSON :: IntSet -> Value
toJSON = forall a. ToJSON a => a -> Value
toJSON forall b c a. (b -> c) -> (a -> b) -> a -> c
. IntSet -> [Int]
IntSet.toList
toEncoding :: IntSet -> Encoding
toEncoding = forall a. ToJSON a => a -> Encoding
toEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. IntSet -> [Int]
IntSet.toList
instance ToJSON1 IntMap.IntMap where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> IntMap a -> Value
liftToJSON a -> Value
t [a] -> Value
tol = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON (Int, a) -> Value
to' [(Int, a)] -> Value
tol' forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. IntMap a -> [(Int, a)]
IntMap.toList
where
to' :: (Int, a) -> Value
to' = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList a -> Value
t [a] -> Value
tol
tol' :: [(Int, a)] -> Value
tol' = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> [f a b]
-> Value
liftToJSONList2 forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList a -> Value
t [a] -> Value
tol
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> IntMap a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
tol = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding (Int, a) -> Encoding
to' [(Int, a)] -> Encoding
tol' forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. IntMap a -> [(Int, a)]
IntMap.toList
where
to' :: (Int, a) -> Encoding
to' = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList a -> Encoding
t [a] -> Encoding
tol
tol' :: [(Int, a)] -> Encoding
tol' = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> [f a b]
-> Encoding
liftToEncodingList2 forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList a -> Encoding
t [a] -> Encoding
tol
instance ToJSON a => ToJSON (IntMap.IntMap a) where
toJSON :: IntMap a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: IntMap a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSONKey k => ToJSON1 (M.Map k) where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Map k a -> Value
liftToJSON a -> Value
g [a] -> Value
_ = case forall a. ToJSONKey a => ToJSONKeyFunction a
toJSONKey of
ToJSONKeyText k -> Key
f k -> Encoding' Key
_ -> Object -> Value
Object forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall v. Map Key v -> KeyMap v
KM.fromMap forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k2 k1 v1 v2.
Ord k2 =>
(k1 -> k2) -> (v1 -> v2) -> Map k1 v1 -> Map k2 v2
mapKeyValO k -> Key
f a -> Value
g
ToJSONKeyValue k -> Value
f k -> Encoding
_ -> Array -> Value
Array forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. [a] -> Vector a
V.fromList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (a -> b) -> [a] -> [b]
map (forall a b. (a -> Value) -> (b -> Value) -> (a, b) -> Value
toJSONPair k -> Value
f a -> Value
g) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k a. Map k a -> [(k, a)]
M.toList
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Map k a -> Encoding
liftToEncoding a -> Encoding
g [a] -> Encoding
_ = case forall a. ToJSONKey a => ToJSONKeyFunction a
toJSONKey of
ToJSONKeyText k -> Key
_ k -> Encoding' Key
f -> forall k v m.
(k -> Encoding' Key)
-> (v -> Encoding)
-> (forall a. (k -> v -> a -> a) -> a -> m -> a)
-> m
-> Encoding
dict k -> Encoding' Key
f a -> Encoding
g forall k a b. (k -> a -> b -> b) -> b -> Map k a -> b
M.foldrWithKey
ToJSONKeyValue k -> Value
_ k -> Encoding
f -> forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding ((k -> Encoding) -> (k, a) -> Encoding
pairEncoding k -> Encoding
f) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k a. Map k a -> [(k, a)]
M.toList
where
pairEncoding :: (k -> Encoding) -> (k, a) -> Encoding
pairEncoding k -> Encoding
f (k
a, a
b) = forall a. (a -> Encoding) -> [a] -> Encoding
E.list forall a. a -> a
id [k -> Encoding
f k
a, a -> Encoding
g a
b]
instance (ToJSON v, ToJSONKey k) => ToJSON (M.Map k v) where
toJSON :: Map k v -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: Map k v -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSON1 Tree.Tree where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Tree a -> Value
liftToJSON a -> Value
t [a] -> Value
tol = Tree a -> Value
go
where
go :: Tree a -> Value
go (Tree.Node a
root [Tree a]
branches) =
forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 a -> Value
t [a] -> Value
tol [Tree a] -> Value
to' [[Tree a]] -> Value
tol' (a
root, [Tree a]
branches)
to' :: [Tree a] -> Value
to' = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON Tree a -> Value
go (forall a. (a -> Value) -> [a] -> Value
listValue Tree a -> Value
go)
tol' :: [[Tree a]] -> Value
tol' = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> [f a] -> Value
liftToJSONList Tree a -> Value
go (forall a. (a -> Value) -> [a] -> Value
listValue Tree a -> Value
go)
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Tree a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
tol = Tree a -> Encoding
go
where
go :: Tree a -> Encoding
go (Tree.Node a
root [Tree a]
branches) =
forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 a -> Encoding
t [a] -> Encoding
tol [Tree a] -> Encoding
to' [[Tree a]] -> Encoding
tol' (a
root, [Tree a]
branches)
to' :: [Tree a] -> Encoding
to' = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding Tree a -> Encoding
go (forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding Tree a -> Encoding
go)
tol' :: [[Tree a]] -> Encoding
tol' = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> [f a] -> Encoding
liftToEncodingList Tree a -> Encoding
go (forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding Tree a -> Encoding
go)
instance (ToJSON v) => ToJSON (Tree.Tree v) where
toJSON :: Tree v -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: Tree v -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSON UUID.UUID where
toJSON :: UUID -> Value
toJSON = forall a. ToJSON a => a -> Value
toJSON forall b c a. (b -> c) -> (a -> b) -> a -> c
. UUID -> Text
UUID.toText
toEncoding :: UUID -> Encoding
toEncoding = forall a. Builder -> Encoding' a
E.unsafeToEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> Builder
EB.quote forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Builder
B.byteString forall b c a. (b -> c) -> (a -> b) -> a -> c
. UUID -> ByteString
UUID.toASCIIBytes
instance ToJSONKey UUID.UUID where
toJSONKey :: ToJSONKeyFunction UUID
toJSONKey = forall a. (a -> Key) -> (a -> Encoding' Key) -> ToJSONKeyFunction a
ToJSONKeyText (Text -> Key
Key.fromText forall b c a. (b -> c) -> (a -> b) -> a -> c
. UUID -> Text
UUID.toText) forall a b. (a -> b) -> a -> b
$
forall a. Builder -> Encoding' a
E.unsafeToEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> Builder
EB.quote forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Builder
B.byteString forall b c a. (b -> c) -> (a -> b) -> a -> c
. UUID -> ByteString
UUID.toASCIIBytes
instance ToJSON1 Vector where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Vector a -> Value
liftToJSON a -> Value
t [a] -> Value
_ = Array -> Value
Array forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (a -> b) -> Vector a -> Vector b
V.map a -> Value
t
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Vector a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
_ = forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding a -> Encoding
t forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Vector a -> [a]
V.toList
instance (ToJSON a) => ToJSON (Vector a) where
{-# SPECIALIZE instance ToJSON Array #-}
toJSON :: Vector a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: Vector a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
encodeVector :: (ToJSON a, VG.Vector v a) => v a -> Encoding
encodeVector :: forall a (v :: * -> *). (ToJSON a, Vector v a) => v a -> Encoding
encodeVector = forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding forall a. ToJSON a => a -> Encoding
toEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (v :: * -> *) a. Vector v a => v a -> [a]
VG.toList
{-# INLINE encodeVector #-}
vectorToJSON :: (VG.Vector v a, ToJSON a) => v a -> Value
vectorToJSON :: forall (v :: * -> *) a. (Vector v a, ToJSON a) => v a -> Value
vectorToJSON = Array -> Value
Array forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (a -> b) -> Vector a -> Vector b
V.map forall a. ToJSON a => a -> Value
toJSON forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (v :: * -> *) a (w :: * -> *).
(Vector v a, Vector w a) =>
v a -> w a
V.convert
{-# INLINE vectorToJSON #-}
instance (Storable a, ToJSON a) => ToJSON (VS.Vector a) where
toJSON :: Vector a -> Value
toJSON = forall (v :: * -> *) a. (Vector v a, ToJSON a) => v a -> Value
vectorToJSON
toEncoding :: Vector a -> Encoding
toEncoding = forall a (v :: * -> *). (ToJSON a, Vector v a) => v a -> Encoding
encodeVector
instance (VP.Prim a, ToJSON a) => ToJSON (VP.Vector a) where
toJSON :: Vector a -> Value
toJSON = forall (v :: * -> *) a. (Vector v a, ToJSON a) => v a -> Value
vectorToJSON
toEncoding :: Vector a -> Encoding
toEncoding = forall a (v :: * -> *). (ToJSON a, Vector v a) => v a -> Encoding
encodeVector
instance (VG.Vector VU.Vector a, ToJSON a) => ToJSON (VU.Vector a) where
toJSON :: Vector a -> Value
toJSON = forall (v :: * -> *) a. (Vector v a, ToJSON a) => v a -> Value
vectorToJSON
toEncoding :: Vector a -> Encoding
toEncoding = forall a (v :: * -> *). (ToJSON a, Vector v a) => v a -> Encoding
encodeVector
instance ToJSON1 HashSet.HashSet where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> HashSet a -> Value
liftToJSON a -> Value
t [a] -> Value
_ = forall a. (a -> Value) -> [a] -> Value
listValue a -> Value
t forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. HashSet a -> [a]
HashSet.toList
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> HashSet a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
_ = forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding a -> Encoding
t forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. HashSet a -> [a]
HashSet.toList
instance (ToJSON a) => ToJSON (HashSet.HashSet a) where
toJSON :: HashSet a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: HashSet a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSONKey k => ToJSON1 (H.HashMap k) where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> HashMap k a -> Value
liftToJSON a -> Value
g [a] -> Value
_ = case forall a. ToJSONKey a => ToJSONKeyFunction a
toJSONKey of
ToJSONKeyText k -> Key
f k -> Encoding' Key
_ -> Object -> Value
Object forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall v. HashMap Key v -> KeyMap v
KM.fromHashMap forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k2 k1 v1 v2.
(Eq k2, Hashable k2) =>
(k1 -> k2) -> (v1 -> v2) -> HashMap k1 v1 -> HashMap k2 v2
mapKeyVal k -> Key
f a -> Value
g
ToJSONKeyValue k -> Value
f k -> Encoding
_
-> Array -> Value
Array forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. [a] -> Vector a
V.fromList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (a -> b) -> [a] -> [b]
map (forall a b. (a -> Value) -> (b -> Value) -> (a, b) -> Value
toJSONPair k -> Value
f a -> Value
g) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k v. HashMap k v -> [(k, v)]
H.toList
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> HashMap k a -> Encoding
liftToEncoding a -> Encoding
g [a] -> Encoding
_ = case forall a. ToJSONKey a => ToJSONKeyFunction a
toJSONKey of
ToJSONKeyText k -> Key
_ k -> Encoding' Key
f -> forall k v m.
(k -> Encoding' Key)
-> (v -> Encoding)
-> (forall a. (k -> v -> a -> a) -> a -> m -> a)
-> m
-> Encoding
dict k -> Encoding' Key
f a -> Encoding
g forall k v a. (k -> v -> a -> a) -> a -> HashMap k v -> a
H.foldrWithKey
ToJSONKeyValue k -> Value
_ k -> Encoding
f -> forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding ((k -> Encoding) -> (k, a) -> Encoding
pairEncoding k -> Encoding
f) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k v. HashMap k v -> [(k, v)]
H.toList
where
pairEncoding :: (k -> Encoding) -> (k, a) -> Encoding
pairEncoding k -> Encoding
f (k
a, a
b) = forall a. (a -> Encoding) -> [a] -> Encoding
E.list forall a. a -> a
id [k -> Encoding
f k
a, a -> Encoding
g a
b]
instance (ToJSON v, ToJSONKey k) => ToJSON (H.HashMap k v) where
toJSON :: HashMap k v -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: HashMap k v -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSON1 KM.KeyMap where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> KeyMap a -> Value
liftToJSON a -> Value
g [a] -> Value
_ = Object -> Value
Object forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> Value
g
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> KeyMap a -> Encoding
liftToEncoding a -> Encoding
g [a] -> Encoding
_ = forall k v m.
(k -> Encoding' Key)
-> (v -> Encoding)
-> (forall a. (k -> v -> a -> a) -> a -> m -> a)
-> m
-> Encoding
dict forall a. Key -> Encoding' a
E.key a -> Encoding
g forall v a. (Key -> v -> a -> a) -> a -> KeyMap v -> a
KM.foldrWithKey
instance (ToJSON v) => ToJSON (KM.KeyMap v) where
{-# SPECIALIZE instance ToJSON Object #-}
toJSON :: KeyMap v -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: KeyMap v -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSON Key where
toJSON :: Key -> Value
toJSON = forall a. ToJSON a => a -> Value
toJSON forall b c a. (b -> c) -> (a -> b) -> a -> c
. Key -> Text
Key.toText
toEncoding :: Key -> Encoding
toEncoding = forall a. Key -> Encoding' a
E.key
instance ToJSONKey Key where
toJSONKey :: ToJSONKeyFunction Key
toJSONKey = forall a. (a -> Key) -> (a -> Encoding' Key) -> ToJSONKeyFunction a
ToJSONKeyText forall a. a -> a
id forall a. Key -> Encoding' a
E.key
instance ToJSON Value where
toJSON :: Value -> Value
toJSON Value
a = Value
a
toEncoding :: Value -> Encoding
toEncoding = Value -> Encoding
E.value
instance ToJSON DotNetTime where
toJSON :: DotNetTime -> Value
toJSON = forall a. ToJSON a => a -> Value
toJSON forall b c a. (b -> c) -> (a -> b) -> a -> c
. DotNetTime -> [Char]
dotNetTime
toEncoding :: DotNetTime -> Encoding
toEncoding = forall a. ToJSON a => a -> Encoding
toEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. DotNetTime -> [Char]
dotNetTime
dotNetTime :: DotNetTime -> String
dotNetTime :: DotNetTime -> [Char]
dotNetTime (DotNetTime UTCTime
t) = [Char]
secs forall a. [a] -> [a] -> [a]
++ forall t. FormatTime t => t -> [Char]
formatMillis UTCTime
t forall a. [a] -> [a] -> [a]
++ [Char]
")/"
where secs :: [Char]
secs = forall t. FormatTime t => TimeLocale -> [Char] -> t -> [Char]
formatTime TimeLocale
defaultTimeLocale [Char]
"/Date(%s" UTCTime
t
formatMillis :: (FormatTime t) => t -> String
formatMillis :: forall t. FormatTime t => t -> [Char]
formatMillis = forall a. Int -> [a] -> [a]
take Int
3 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall t. FormatTime t => TimeLocale -> [Char] -> t -> [Char]
formatTime TimeLocale
defaultTimeLocale [Char]
"%q"
instance ToJSON a => ToJSON (PM.Array a) where
toJSON :: Array a -> Value
toJSON = forall a. ToJSON a => a -> Value
toJSON forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall l. IsList l => l -> [Item l]
Exts.toList
toEncoding :: Array a -> Encoding
toEncoding = forall a. ToJSON a => a -> Encoding
toEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall l. IsList l => l -> [Item l]
Exts.toList
instance ToJSON a => ToJSON (PM.SmallArray a) where
toJSON :: SmallArray a -> Value
toJSON = forall a. ToJSON a => a -> Value
toJSON forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall l. IsList l => l -> [Item l]
Exts.toList
toEncoding :: SmallArray a -> Encoding
toEncoding = forall a. ToJSON a => a -> Encoding
toEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall l. IsList l => l -> [Item l]
Exts.toList
instance (PM.Prim a,ToJSON a) => ToJSON (PM.PrimArray a) where
toJSON :: PrimArray a -> Value
toJSON = forall a. ToJSON a => a -> Value
toJSON forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall l. IsList l => l -> [Item l]
Exts.toList
toEncoding :: PrimArray a -> Encoding
toEncoding = forall a. ToJSON a => a -> Encoding
toEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall l. IsList l => l -> [Item l]
Exts.toList
instance ToJSON Day where
toJSON :: Day -> Value
toJSON = Encoding' Text -> Value
stringEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Day -> Encoding' a
E.day
toEncoding :: Day -> Encoding
toEncoding = forall a. Day -> Encoding' a
E.day
instance ToJSONKey Day where
toJSONKey :: ToJSONKeyFunction Day
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. Day -> Encoding' a
E.day
instance ToJSON Month where
toJSON :: Month -> Value
toJSON = Encoding' Text -> Value
stringEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Month -> Encoding' a
E.month
toEncoding :: Month -> Encoding
toEncoding = forall a. Month -> Encoding' a
E.month
instance ToJSONKey Month where
toJSONKey :: ToJSONKeyFunction Month
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. Month -> Encoding' a
E.month
instance ToJSON Quarter where
toJSON :: Quarter -> Value
toJSON = Encoding' Text -> Value
stringEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Quarter -> Encoding' a
E.quarter
toEncoding :: Quarter -> Encoding
toEncoding = forall a. Quarter -> Encoding' a
E.quarter
instance ToJSONKey Quarter where
toJSONKey :: ToJSONKeyFunction Quarter
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. Quarter -> Encoding' a
E.quarter
instance ToJSON TimeOfDay where
toJSON :: TimeOfDay -> Value
toJSON = Encoding' Text -> Value
stringEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. TimeOfDay -> Encoding' a
E.timeOfDay
toEncoding :: TimeOfDay -> Encoding
toEncoding = forall a. TimeOfDay -> Encoding' a
E.timeOfDay
instance ToJSONKey TimeOfDay where
toJSONKey :: ToJSONKeyFunction TimeOfDay
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. TimeOfDay -> Encoding' a
E.timeOfDay
instance ToJSON LocalTime where
toJSON :: LocalTime -> Value
toJSON = Encoding' Text -> Value
stringEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. LocalTime -> Encoding' a
E.localTime
toEncoding :: LocalTime -> Encoding
toEncoding = forall a. LocalTime -> Encoding' a
E.localTime
instance ToJSONKey LocalTime where
toJSONKey :: ToJSONKeyFunction LocalTime
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. LocalTime -> Encoding' a
E.localTime
instance ToJSON ZonedTime where
toJSON :: ZonedTime -> Value
toJSON = Encoding' Text -> Value
stringEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. ZonedTime -> Encoding' a
E.zonedTime
toEncoding :: ZonedTime -> Encoding
toEncoding = forall a. ZonedTime -> Encoding' a
E.zonedTime
instance ToJSONKey ZonedTime where
toJSONKey :: ToJSONKeyFunction ZonedTime
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. ZonedTime -> Encoding' a
E.zonedTime
instance ToJSON UTCTime where
toJSON :: UTCTime -> Value
toJSON = Encoding' Text -> Value
stringEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. UTCTime -> Encoding' a
E.utcTime
toEncoding :: UTCTime -> Encoding
toEncoding = forall a. UTCTime -> Encoding' a
E.utcTime
instance ToJSONKey UTCTime where
toJSONKey :: ToJSONKeyFunction UTCTime
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. UTCTime -> Encoding' a
E.utcTime
stringEncoding :: Encoding' Text -> Value
stringEncoding :: Encoding' Text -> Value
stringEncoding = Text -> Value
String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> Text -> Text
T.dropAround (forall a. Eq a => a -> a -> Bool
== Char
'"')
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Text
T.decodeLatin1
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ByteString
L.toStrict
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Encoding' a -> ByteString
E.encodingToLazyByteString
{-# INLINE stringEncoding #-}
instance ToJSON NominalDiffTime where
toJSON :: NominalDiffTime -> Value
toJSON = Scientific -> Value
Number forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Real a, Fractional b) => a -> b
realToFrac
toEncoding :: NominalDiffTime -> Encoding
toEncoding = Scientific -> Encoding
E.scientific forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Real a, Fractional b) => a -> b
realToFrac
instance ToJSON DiffTime where
toJSON :: DiffTime -> Value
toJSON = Scientific -> Value
Number forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Real a, Fractional b) => a -> b
realToFrac
toEncoding :: DiffTime -> Encoding
toEncoding = Scientific -> Encoding
E.scientific forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Real a, Fractional b) => a -> b
realToFrac
instance ToJSON SystemTime where
toJSON :: SystemTime -> Value
toJSON (MkSystemTime Int64
secs Word32
nsecs) =
forall a. ToJSON a => a -> Value
toJSON (forall a b. (Integral a, Num b) => a -> b
fromIntegral Int64
secs forall a. Num a => a -> a -> a
+ forall a b. (Integral a, Num b) => a -> b
fromIntegral Word32
nsecs forall a. Fractional a => a -> a -> a
/ Nano
1000000000 :: Nano)
toEncoding :: SystemTime -> Encoding
toEncoding (MkSystemTime Int64
secs Word32
nsecs) =
forall a. ToJSON a => a -> Encoding
toEncoding (forall a b. (Integral a, Num b) => a -> b
fromIntegral Int64
secs forall a. Num a => a -> a -> a
+ forall a b. (Integral a, Num b) => a -> b
fromIntegral Word32
nsecs forall a. Fractional a => a -> a -> a
/ Nano
1000000000 :: Nano)
instance ToJSON CalendarDiffTime where
toJSON :: CalendarDiffTime -> Value
toJSON (CalendarDiffTime Integer
m NominalDiffTime
nt) = [Pair] -> Value
object
[ Key
"months" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Integer
m
, Key
"time" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= NominalDiffTime
nt
]
toEncoding :: CalendarDiffTime -> Encoding
toEncoding (CalendarDiffTime Integer
m NominalDiffTime
nt) = Series -> Encoding
E.pairs
(Key
"months" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Integer
m forall a. Semigroup a => a -> a -> a
<> Key
"time" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= NominalDiffTime
nt)
instance ToJSON CalendarDiffDays where
toJSON :: CalendarDiffDays -> Value
toJSON (CalendarDiffDays Integer
m Integer
d) = [Pair] -> Value
object
[ Key
"months" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Integer
m
, Key
"days" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Integer
d
]
toEncoding :: CalendarDiffDays -> Encoding
toEncoding (CalendarDiffDays Integer
m Integer
d) = Series -> Encoding
E.pairs
(Key
"months" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Integer
m forall a. Semigroup a => a -> a -> a
<> Key
"days" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Integer
d)
instance ToJSON DayOfWeek where
toJSON :: DayOfWeek -> Value
toJSON DayOfWeek
Monday = Value
"monday"
toJSON DayOfWeek
Tuesday = Value
"tuesday"
toJSON DayOfWeek
Wednesday = Value
"wednesday"
toJSON DayOfWeek
Thursday = Value
"thursday"
toJSON DayOfWeek
Friday = Value
"friday"
toJSON DayOfWeek
Saturday = Value
"saturday"
toJSON DayOfWeek
Sunday = Value
"sunday"
toEncoding :: DayOfWeek -> Encoding
toEncoding = forall a. DayOfWeek -> Encoding' a
toEncodingDayOfWeek
toEncodingDayOfWeek :: DayOfWeek -> E.Encoding' a
toEncodingDayOfWeek :: forall a. DayOfWeek -> Encoding' a
toEncodingDayOfWeek DayOfWeek
Monday = forall a. Builder -> Encoding' a
E.unsafeToEncoding Builder
"\"monday\""
toEncodingDayOfWeek DayOfWeek
Tuesday = forall a. Builder -> Encoding' a
E.unsafeToEncoding Builder
"\"tuesday\""
toEncodingDayOfWeek DayOfWeek
Wednesday = forall a. Builder -> Encoding' a
E.unsafeToEncoding Builder
"\"wednesday\""
toEncodingDayOfWeek DayOfWeek
Thursday = forall a. Builder -> Encoding' a
E.unsafeToEncoding Builder
"\"thursday\""
toEncodingDayOfWeek DayOfWeek
Friday = forall a. Builder -> Encoding' a
E.unsafeToEncoding Builder
"\"friday\""
toEncodingDayOfWeek DayOfWeek
Saturday = forall a. Builder -> Encoding' a
E.unsafeToEncoding Builder
"\"saturday\""
toEncodingDayOfWeek DayOfWeek
Sunday = forall a. Builder -> Encoding' a
E.unsafeToEncoding Builder
"\"sunday\""
instance ToJSONKey DayOfWeek where
toJSONKey :: ToJSONKeyFunction DayOfWeek
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. DayOfWeek -> Encoding' a
toEncodingDayOfWeek
instance ToJSON QuarterOfYear where
toJSON :: QuarterOfYear -> Value
toJSON QuarterOfYear
Q1 = Value
"q1"
toJSON QuarterOfYear
Q2 = Value
"q2"
toJSON QuarterOfYear
Q3 = Value
"q3"
toJSON QuarterOfYear
Q4 = Value
"q4"
toEncoding :: QuarterOfYear -> Encoding
toEncoding = forall a. QuarterOfYear -> Encoding' a
toEncodingQuarterOfYear
toEncodingQuarterOfYear :: QuarterOfYear -> E.Encoding' a
toEncodingQuarterOfYear :: forall a. QuarterOfYear -> Encoding' a
toEncodingQuarterOfYear QuarterOfYear
Q1 = forall a. Builder -> Encoding' a
E.unsafeToEncoding Builder
"\"q1\""
toEncodingQuarterOfYear QuarterOfYear
Q2 = forall a. Builder -> Encoding' a
E.unsafeToEncoding Builder
"\"q2\""
toEncodingQuarterOfYear QuarterOfYear
Q3 = forall a. Builder -> Encoding' a
E.unsafeToEncoding Builder
"\"q3\""
toEncodingQuarterOfYear QuarterOfYear
Q4 = forall a. Builder -> Encoding' a
E.unsafeToEncoding Builder
"\"q4\""
instance ToJSONKey QuarterOfYear where
toJSONKey :: ToJSONKeyFunction QuarterOfYear
toJSONKey = forall a. (a -> Encoding' Key) -> ToJSONKeyFunction a
toJSONKeyTextEnc forall a. QuarterOfYear -> Encoding' a
toEncodingQuarterOfYear
instance ToJSON1 Monoid.Dual where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Dual a -> Value
liftToJSON a -> Value
t [a] -> Value
_ = a -> Value
t forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Dual a -> a
Monoid.getDual
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Dual a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
_ = a -> Encoding
t forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Dual a -> a
Monoid.getDual
instance ToJSON a => ToJSON (Monoid.Dual a) where
toJSON :: Dual a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: Dual a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSON1 Monoid.First where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> First a -> Value
liftToJSON a -> Value
t [a] -> Value
to' = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON a -> Value
t [a] -> Value
to' forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. First a -> Maybe a
Monoid.getFirst
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> First a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
to' = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
to' forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. First a -> Maybe a
Monoid.getFirst
instance ToJSON a => ToJSON (Monoid.First a) where
toJSON :: First a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: First a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSON1 Monoid.Last where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Last a -> Value
liftToJSON a -> Value
t [a] -> Value
to' = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON a -> Value
t [a] -> Value
to' forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Last a -> Maybe a
Monoid.getLast
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Last a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
to' = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
to' forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Last a -> Maybe a
Monoid.getLast
instance ToJSON a => ToJSON (Monoid.Last a) where
toJSON :: Last a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: Last a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSON1 Semigroup.Min where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Min a -> Value
liftToJSON a -> Value
t [a] -> Value
_ (Semigroup.Min a
x) = a -> Value
t a
x
liftToEncoding :: forall a. (a -> Encoding) -> ([a] -> Encoding) -> Min a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
_ (Semigroup.Min a
x) = a -> Encoding
t a
x
instance ToJSON a => ToJSON (Semigroup.Min a) where
toJSON :: Min a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: Min a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSON1 Semigroup.Max where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Max a -> Value
liftToJSON a -> Value
t [a] -> Value
_ (Semigroup.Max a
x) = a -> Value
t a
x
liftToEncoding :: forall a. (a -> Encoding) -> ([a] -> Encoding) -> Max a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
_ (Semigroup.Max a
x) = a -> Encoding
t a
x
instance ToJSON a => ToJSON (Semigroup.Max a) where
toJSON :: Max a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: Max a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSON1 Semigroup.First where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> First a -> Value
liftToJSON a -> Value
t [a] -> Value
_ (Semigroup.First a
x) = a -> Value
t a
x
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> First a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
_ (Semigroup.First a
x) = a -> Encoding
t a
x
instance ToJSON a => ToJSON (Semigroup.First a) where
toJSON :: First a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: First a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSON1 Semigroup.Last where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Last a -> Value
liftToJSON a -> Value
t [a] -> Value
_ (Semigroup.Last a
x) = a -> Value
t a
x
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Last a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
_ (Semigroup.Last a
x) = a -> Encoding
t a
x
instance ToJSON a => ToJSON (Semigroup.Last a) where
toJSON :: Last a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: Last a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSON1 Semigroup.WrappedMonoid where
liftToJSON :: forall a.
(a -> Value) -> ([a] -> Value) -> WrappedMonoid a -> Value
liftToJSON a -> Value
t [a] -> Value
_ (Semigroup.WrapMonoid a
x) = a -> Value
t a
x
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> WrappedMonoid a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
_ (Semigroup.WrapMonoid a
x) = a -> Encoding
t a
x
instance ToJSON a => ToJSON (Semigroup.WrappedMonoid a) where
toJSON :: WrappedMonoid a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: WrappedMonoid a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
#if !MIN_VERSION_base(4,16,0)
instance ToJSON1 Semigroup.Option where
liftToJSON t to' = liftToJSON t to' . Semigroup.getOption
liftToEncoding t to' = liftToEncoding t to' . Semigroup.getOption
instance ToJSON a => ToJSON (Semigroup.Option a) where
toJSON = toJSON1
toEncoding = toEncoding1
#endif
instance ToJSON1 f => ToJSON (F.Fix f) where
toJSON :: Fix f -> Value
toJSON = forall (f :: * -> *). ToJSON1 f => Fix f -> Value
go where go :: Fix f -> Value
go (F.Fix f (Fix f)
f) = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON Fix f -> Value
go forall a. ToJSON a => [a] -> Value
toJSONList f (Fix f)
f
toEncoding :: Fix f -> Encoding
toEncoding = forall (f :: * -> *). ToJSON1 f => Fix f -> Encoding
go where go :: Fix f -> Encoding
go (F.Fix f (Fix f)
f) = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding Fix f -> Encoding
go forall a. ToJSON a => [a] -> Encoding
toEncodingList f (Fix f)
f
instance (ToJSON1 f, Functor f) => ToJSON (F.Mu f) where
toJSON :: Mu f -> Value
toJSON = forall (f :: * -> *) a. (f a -> a) -> Mu f -> a
F.foldMu (forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON forall a. a -> a
id (forall a. (a -> Value) -> [a] -> Value
listValue forall a. a -> a
id))
toEncoding :: Mu f -> Encoding
toEncoding = forall (f :: * -> *) a. (f a -> a) -> Mu f -> a
F.foldMu (forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding forall a. a -> a
id (forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding forall a. a -> a
id))
instance (ToJSON1 f, Functor f) => ToJSON (F.Nu f) where
toJSON :: Nu f -> Value
toJSON = forall (f :: * -> *) a. Functor f => (f a -> a) -> Nu f -> a
F.foldNu (forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON forall a. a -> a
id (forall a. (a -> Value) -> [a] -> Value
listValue forall a. a -> a
id))
toEncoding :: Nu f -> Encoding
toEncoding = forall (f :: * -> *) a. Functor f => (f a -> a) -> Nu f -> a
F.foldNu (forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding forall a. a -> a
id (forall a. (a -> Encoding) -> [a] -> Encoding
listEncoding forall a. a -> a
id))
instance (ToJSON a, ToJSON b) => ToJSON (S.These a b) where
toJSON :: These a b -> Value
toJSON = forall a. ToJSON a => a -> Value
toJSON forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
toEncoding :: These a b -> Encoding
toEncoding = forall a. ToJSON a => a -> Encoding
toEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
instance ToJSON2 S.These where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> These a b
-> Value
liftToJSON2 a -> Value
toa [a] -> Value
toas b -> Value
tob [b] -> Value
tobs = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 a -> Value
toa [a] -> Value
toas b -> Value
tob [b] -> Value
tobs forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> These a b
-> Encoding
liftToEncoding2 a -> Encoding
toa [a] -> Encoding
toas b -> Encoding
tob [b] -> Encoding
tobs = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 a -> Encoding
toa [a] -> Encoding
toas b -> Encoding
tob [b] -> Encoding
tobs forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
instance ToJSON a => ToJSON1 (S.These a) where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> These a a -> Value
liftToJSON a -> Value
toa [a] -> Value
tos = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON a -> Value
toa [a] -> Value
tos forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> These a a -> Encoding
liftToEncoding a -> Encoding
toa [a] -> Encoding
tos = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding a -> Encoding
toa [a] -> Encoding
tos forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
instance (ToJSON a, ToJSON b) => ToJSON (S.Pair a b) where
toJSON :: Pair a b -> Value
toJSON = forall a. ToJSON a => a -> Value
toJSON forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
toEncoding :: Pair a b -> Encoding
toEncoding = forall a. ToJSON a => a -> Encoding
toEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
instance ToJSON2 S.Pair where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> Pair a b
-> Value
liftToJSON2 a -> Value
toa [a] -> Value
toas b -> Value
tob [b] -> Value
tobs = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 a -> Value
toa [a] -> Value
toas b -> Value
tob [b] -> Value
tobs forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> Pair a b
-> Encoding
liftToEncoding2 a -> Encoding
toa [a] -> Encoding
toas b -> Encoding
tob [b] -> Encoding
tobs = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 a -> Encoding
toa [a] -> Encoding
toas b -> Encoding
tob [b] -> Encoding
tobs forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
instance ToJSON a => ToJSON1 (S.Pair a) where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Pair a a -> Value
liftToJSON a -> Value
toa [a] -> Value
tos = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON a -> Value
toa [a] -> Value
tos forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Pair a a -> Encoding
liftToEncoding a -> Encoding
toa [a] -> Encoding
tos = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding a -> Encoding
toa [a] -> Encoding
tos forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
instance (ToJSON a, ToJSON b) => ToJSON (S.Either a b) where
toJSON :: Either a b -> Value
toJSON = forall a. ToJSON a => a -> Value
toJSON forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
toEncoding :: Either a b -> Encoding
toEncoding = forall a. ToJSON a => a -> Encoding
toEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
instance ToJSON2 S.Either where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> Either a b
-> Value
liftToJSON2 a -> Value
toa [a] -> Value
toas b -> Value
tob [b] -> Value
tobs = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 a -> Value
toa [a] -> Value
toas b -> Value
tob [b] -> Value
tobs forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> Either a b
-> Encoding
liftToEncoding2 a -> Encoding
toa [a] -> Encoding
toas b -> Encoding
tob [b] -> Encoding
tobs = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 a -> Encoding
toa [a] -> Encoding
toas b -> Encoding
tob [b] -> Encoding
tobs forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
instance ToJSON a => ToJSON1 (S.Either a) where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Either a a -> Value
liftToJSON a -> Value
toa [a] -> Value
tos = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON a -> Value
toa [a] -> Value
tos forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Either a a -> Encoding
liftToEncoding a -> Encoding
toa [a] -> Encoding
tos = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding a -> Encoding
toa [a] -> Encoding
tos forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
instance ToJSON a => ToJSON (S.Maybe a) where
toJSON :: Maybe a -> Value
toJSON = forall a. ToJSON a => a -> Value
toJSON forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
toEncoding :: Maybe a -> Encoding
toEncoding = forall a. ToJSON a => a -> Encoding
toEncoding forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
instance ToJSON1 S.Maybe where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Maybe a -> Value
liftToJSON a -> Value
toa [a] -> Value
tos = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON a -> Value
toa [a] -> Value
tos forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Maybe a -> Encoding
liftToEncoding a -> Encoding
toa [a] -> Encoding
tos = forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding a -> Encoding
toa [a] -> Encoding
tos forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall lazy strict. Strict lazy strict => strict -> lazy
S.toLazy
instance ToJSON1 Proxy where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Proxy a -> Value
liftToJSON a -> Value
_ [a] -> Value
_ Proxy a
_ = Value
Null
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Proxy a -> Encoding
liftToEncoding a -> Encoding
_ [a] -> Encoding
_ Proxy a
_ = Encoding
E.null_
instance ToJSON (Proxy a) where
toJSON :: Proxy a -> Value
toJSON Proxy a
_ = Value
Null
toEncoding :: Proxy a -> Encoding
toEncoding Proxy a
_ = Encoding
E.null_
instance ToJSON2 Tagged where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> Tagged a b
-> Value
liftToJSON2 a -> Value
_ [a] -> Value
_ b -> Value
t [b] -> Value
_ (Tagged b
x) = b -> Value
t b
x
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> Tagged a b
-> Encoding
liftToEncoding2 a -> Encoding
_ [a] -> Encoding
_ b -> Encoding
t [b] -> Encoding
_ (Tagged b
x) = b -> Encoding
t b
x
instance ToJSON1 (Tagged a) where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> Tagged a a -> Value
liftToJSON a -> Value
t [a] -> Value
_ (Tagged a
x) = a -> Value
t a
x
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> Tagged a a -> Encoding
liftToEncoding a -> Encoding
t [a] -> Encoding
_ (Tagged a
x) = a -> Encoding
t a
x
instance ToJSON b => ToJSON (Tagged a b) where
toJSON :: Tagged a b -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: Tagged a b -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance ToJSONKey b => ToJSONKey (Tagged a b) where
toJSONKey :: ToJSONKeyFunction (Tagged a b)
toJSONKey = forall a' a.
(a' -> a) -> ToJSONKeyFunction a -> ToJSONKeyFunction a'
contramapToJSONKeyFunction forall {k} (s :: k) b. Tagged s b -> b
unTagged forall a. ToJSONKey a => ToJSONKeyFunction a
toJSONKey
toJSONKeyList :: ToJSONKeyFunction [Tagged a b]
toJSONKeyList = forall a' a.
(a' -> a) -> ToJSONKeyFunction a -> ToJSONKeyFunction a'
contramapToJSONKeyFunction (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall {k} (s :: k) b. Tagged s b -> b
unTagged) forall a. ToJSONKey a => ToJSONKeyFunction [a]
toJSONKeyList
instance (ToJSON a, ToJSON b) => ToJSON (These a b) where
toJSON :: These a b -> Value
toJSON (This a
a) = [Pair] -> Value
object [ Key
"This" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= a
a ]
toJSON (That b
b) = [Pair] -> Value
object [ Key
"That" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= b
b ]
toJSON (These a
a b
b) = [Pair] -> Value
object [ Key
"This" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= a
a, Key
"That" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= b
b ]
toEncoding :: These a b -> Encoding
toEncoding (This a
a) = Series -> Encoding
E.pairs forall a b. (a -> b) -> a -> b
$ Key
"This" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= a
a
toEncoding (That b
b) = Series -> Encoding
E.pairs forall a b. (a -> b) -> a -> b
$ Key
"That" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= b
b
toEncoding (These a
a b
b) = Series -> Encoding
E.pairs forall a b. (a -> b) -> a -> b
$ Key
"This" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= a
a forall a. Semigroup a => a -> a -> a
<> Key
"That" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= b
b
instance ToJSON2 These where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> These a b
-> Value
liftToJSON2 a -> Value
toa [a] -> Value
_ b -> Value
_tob [b] -> Value
_ (This a
a) = [Pair] -> Value
object [ Key
"This" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= a -> Value
toa a
a ]
liftToJSON2 a -> Value
_toa [a] -> Value
_ b -> Value
tob [b] -> Value
_ (That b
b) = [Pair] -> Value
object [ Key
"That" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= b -> Value
tob b
b ]
liftToJSON2 a -> Value
toa [a] -> Value
_ b -> Value
tob [b] -> Value
_ (These a
a b
b) = [Pair] -> Value
object [ Key
"This" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= a -> Value
toa a
a, Key
"That" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= b -> Value
tob b
b ]
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> These a b
-> Encoding
liftToEncoding2 a -> Encoding
toa [a] -> Encoding
_ b -> Encoding
_tob [b] -> Encoding
_ (This a
a) = Series -> Encoding
E.pairs forall a b. (a -> b) -> a -> b
$ Key -> Encoding -> Series
E.pair Key
"This" (a -> Encoding
toa a
a)
liftToEncoding2 a -> Encoding
_toa [a] -> Encoding
_ b -> Encoding
tob [b] -> Encoding
_ (That b
b) = Series -> Encoding
E.pairs forall a b. (a -> b) -> a -> b
$ Key -> Encoding -> Series
E.pair Key
"That" (b -> Encoding
tob b
b)
liftToEncoding2 a -> Encoding
toa [a] -> Encoding
_ b -> Encoding
tob [b] -> Encoding
_ (These a
a b
b) = Series -> Encoding
E.pairs forall a b. (a -> b) -> a -> b
$ Key -> Encoding -> Series
E.pair Key
"This" (a -> Encoding
toa a
a) forall a. Semigroup a => a -> a -> a
<> Key -> Encoding -> Series
E.pair Key
"That" (b -> Encoding
tob b
b)
instance ToJSON a => ToJSON1 (These a) where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> These a a -> Value
liftToJSON a -> Value
_tob [a] -> Value
_ (This a
a) = [Pair] -> Value
object [ Key
"This" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= a
a ]
liftToJSON a -> Value
tob [a] -> Value
_ (That a
b) = [Pair] -> Value
object [ Key
"That" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= a -> Value
tob a
b ]
liftToJSON a -> Value
tob [a] -> Value
_ (These a
a a
b) = [Pair] -> Value
object [ Key
"This" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= a
a, Key
"That" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= a -> Value
tob a
b ]
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> These a a -> Encoding
liftToEncoding a -> Encoding
_tob [a] -> Encoding
_ (This a
a) = Series -> Encoding
E.pairs forall a b. (a -> b) -> a -> b
$ Key
"This" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= a
a
liftToEncoding a -> Encoding
tob [a] -> Encoding
_ (That a
b) = Series -> Encoding
E.pairs forall a b. (a -> b) -> a -> b
$ Key -> Encoding -> Series
E.pair Key
"That" (a -> Encoding
tob a
b)
liftToEncoding a -> Encoding
tob [a] -> Encoding
_ (These a
a a
b) = Series -> Encoding
E.pairs forall a b. (a -> b) -> a -> b
$ Key
"This" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= a
a forall a. Semigroup a => a -> a -> a
<> Key -> Encoding -> Series
E.pair Key
"That" (a -> Encoding
tob a
b)
instance (ToJSON1 f, ToJSON1 g) => ToJSON1 (These1 f g) where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> These1 f g a -> Value
liftToJSON a -> Value
tx [a] -> Value
tl (This1 f a
a) = [Pair] -> Value
object [ Key
"This" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON a -> Value
tx [a] -> Value
tl f a
a ]
liftToJSON a -> Value
tx [a] -> Value
tl (That1 g a
b) = [Pair] -> Value
object [ Key
"That" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON a -> Value
tx [a] -> Value
tl g a
b ]
liftToJSON a -> Value
tx [a] -> Value
tl (These1 f a
a g a
b) = [Pair] -> Value
object [ Key
"This" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON a -> Value
tx [a] -> Value
tl f a
a, Key
"That" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Value) -> ([a] -> Value) -> f a -> Value
liftToJSON a -> Value
tx [a] -> Value
tl g a
b ]
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> These1 f g a -> Encoding
liftToEncoding a -> Encoding
tx [a] -> Encoding
tl (This1 f a
a) = Series -> Encoding
E.pairs forall a b. (a -> b) -> a -> b
$ Key -> Encoding -> Series
E.pair Key
"This" (forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding a -> Encoding
tx [a] -> Encoding
tl f a
a)
liftToEncoding a -> Encoding
tx [a] -> Encoding
tl (That1 g a
b) = Series -> Encoding
E.pairs forall a b. (a -> b) -> a -> b
$ Key -> Encoding -> Series
E.pair Key
"That" (forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding a -> Encoding
tx [a] -> Encoding
tl g a
b)
liftToEncoding a -> Encoding
tx [a] -> Encoding
tl (These1 f a
a g a
b) = Series -> Encoding
E.pairs forall a b. (a -> b) -> a -> b
$
forall v kv. KeyValuePair v kv => Key -> v -> kv
pair Key
"This" (forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding a -> Encoding
tx [a] -> Encoding
tl f a
a) forall a. Monoid a => a -> a -> a
`mappend`
forall v kv. KeyValuePair v kv => Key -> v -> kv
pair Key
"That" (forall (f :: * -> *) a.
ToJSON1 f =>
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
liftToEncoding a -> Encoding
tx [a] -> Encoding
tl g a
b)
instance (ToJSON1 f, ToJSON1 g, ToJSON a) => ToJSON (These1 f g a) where
toJSON :: These1 f g a -> Value
toJSON = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Value
toJSON1
toEncoding :: These1 f g a -> Encoding
toEncoding = forall (f :: * -> *) a. (ToJSON1 f, ToJSON a) => f a -> Encoding
toEncoding1
instance (ToJSON a, ToJSON b) => ToJSONKey (a,b)
instance (ToJSON a, ToJSON b, ToJSON c) => ToJSONKey (a,b,c)
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d) => ToJSONKey (a,b,c,d)
instance ToJSONKey Char where
toJSONKey :: ToJSONKeyFunction Char
toJSONKey = forall a. (a -> Text) -> ToJSONKeyFunction a
toJSONKeyText Char -> Text
T.singleton
toJSONKeyList :: ToJSONKeyFunction [Char]
toJSONKeyList = forall a. (a -> Text) -> ToJSONKeyFunction a
toJSONKeyText [Char] -> Text
T.pack
instance (ToJSONKey a, ToJSON a) => ToJSONKey [a] where
toJSONKey :: ToJSONKeyFunction [a]
toJSONKey = forall a. ToJSONKey a => ToJSONKeyFunction [a]
toJSONKeyList
instance ToJSON2 (,) where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> (a, b)
-> Value
liftToJSON2 a -> Value
toA [a] -> Value
_ b -> Value
toB [b] -> Value
_ (a
a, b
b) = Array -> Value
Array forall a b. (a -> b) -> a -> b
$ forall a. (forall s. ST s (MVector s a)) -> Vector a
V.create forall a b. (a -> b) -> a -> b
$ do
MVector s Value
mv <- forall (m :: * -> *) a.
PrimMonad m =>
Int -> m (MVector (PrimState m) a)
VM.unsafeNew Int
2
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
0 (a -> Value
toA a
a)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
1 (b -> Value
toB b
b)
forall (m :: * -> *) a. Monad m => a -> m a
return MVector s Value
mv
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> (a, b)
-> Encoding
liftToEncoding2 a -> Encoding
toA [a] -> Encoding
_ b -> Encoding
toB [b] -> Encoding
_ (a
a, b
b) = forall a. (a -> Encoding) -> [a] -> Encoding
E.list forall a. a -> a
id [a -> Encoding
toA a
a, b -> Encoding
toB b
b]
instance (ToJSON a) => ToJSON1 ((,) a) where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> (a, a) -> Value
liftToJSON = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> (a, a) -> Encoding
liftToEncoding = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
instance (ToJSON a, ToJSON b) => ToJSON (a, b) where
toJSON :: (a, b) -> Value
toJSON = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Value
toJSON2
toEncoding :: (a, b) -> Encoding
toEncoding = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Encoding
toEncoding2
instance (ToJSON a) => ToJSON2 ((,,) a) where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> (a, a, b)
-> Value
liftToJSON2 a -> Value
toB [a] -> Value
_ b -> Value
toC [b] -> Value
_ (a
a, a
b, b
c) = Array -> Value
Array forall a b. (a -> b) -> a -> b
$ forall a. (forall s. ST s (MVector s a)) -> Vector a
V.create forall a b. (a -> b) -> a -> b
$ do
MVector s Value
mv <- forall (m :: * -> *) a.
PrimMonad m =>
Int -> m (MVector (PrimState m) a)
VM.unsafeNew Int
3
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
0 (forall a. ToJSON a => a -> Value
toJSON a
a)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
1 (a -> Value
toB a
b)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
2 (b -> Value
toC b
c)
forall (m :: * -> *) a. Monad m => a -> m a
return MVector s Value
mv
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> (a, a, b)
-> Encoding
liftToEncoding2 a -> Encoding
toB [a] -> Encoding
_ b -> Encoding
toC [b] -> Encoding
_ (a
a, a
b, b
c) = forall a. (a -> Encoding) -> [a] -> Encoding
E.list forall a. a -> a
id
[ forall a. ToJSON a => a -> Encoding
toEncoding a
a
, a -> Encoding
toB a
b
, b -> Encoding
toC b
c
]
instance (ToJSON a, ToJSON b) => ToJSON1 ((,,) a b) where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> (a, b, a) -> Value
liftToJSON = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> (a, b, a) -> Encoding
liftToEncoding = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
instance (ToJSON a, ToJSON b, ToJSON c) => ToJSON (a, b, c) where
toJSON :: (a, b, c) -> Value
toJSON = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Value
toJSON2
toEncoding :: (a, b, c) -> Encoding
toEncoding = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Encoding
toEncoding2
instance (ToJSON a, ToJSON b) => ToJSON2 ((,,,) a b) where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> (a, b, a, b)
-> Value
liftToJSON2 a -> Value
toC [a] -> Value
_ b -> Value
toD [b] -> Value
_ (a
a, b
b, a
c, b
d) = Array -> Value
Array forall a b. (a -> b) -> a -> b
$ forall a. (forall s. ST s (MVector s a)) -> Vector a
V.create forall a b. (a -> b) -> a -> b
$ do
MVector s Value
mv <- forall (m :: * -> *) a.
PrimMonad m =>
Int -> m (MVector (PrimState m) a)
VM.unsafeNew Int
4
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
0 (forall a. ToJSON a => a -> Value
toJSON a
a)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
1 (forall a. ToJSON a => a -> Value
toJSON b
b)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
2 (a -> Value
toC a
c)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
3 (b -> Value
toD b
d)
forall (m :: * -> *) a. Monad m => a -> m a
return MVector s Value
mv
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> (a, b, a, b)
-> Encoding
liftToEncoding2 a -> Encoding
toC [a] -> Encoding
_ b -> Encoding
toD [b] -> Encoding
_ (a
a, b
b, a
c, b
d) = forall a. (a -> Encoding) -> [a] -> Encoding
E.list forall a. a -> a
id
[ forall a. ToJSON a => a -> Encoding
toEncoding a
a
, forall a. ToJSON a => a -> Encoding
toEncoding b
b
, a -> Encoding
toC a
c
, b -> Encoding
toD b
d
]
instance (ToJSON a, ToJSON b, ToJSON c) => ToJSON1 ((,,,) a b c) where
liftToJSON :: forall a. (a -> Value) -> ([a] -> Value) -> (a, b, c, a) -> Value
liftToJSON = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> (a, b, c, a) -> Encoding
liftToEncoding = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d) => ToJSON (a, b, c, d) where
toJSON :: (a, b, c, d) -> Value
toJSON = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Value
toJSON2
toEncoding :: (a, b, c, d) -> Encoding
toEncoding = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Encoding
toEncoding2
instance (ToJSON a, ToJSON b, ToJSON c) => ToJSON2 ((,,,,) a b c) where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> (a, b, c, a, b)
-> Value
liftToJSON2 a -> Value
toD [a] -> Value
_ b -> Value
toE [b] -> Value
_ (a
a, b
b, c
c, a
d, b
e) = Array -> Value
Array forall a b. (a -> b) -> a -> b
$ forall a. (forall s. ST s (MVector s a)) -> Vector a
V.create forall a b. (a -> b) -> a -> b
$ do
MVector s Value
mv <- forall (m :: * -> *) a.
PrimMonad m =>
Int -> m (MVector (PrimState m) a)
VM.unsafeNew Int
5
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
0 (forall a. ToJSON a => a -> Value
toJSON a
a)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
1 (forall a. ToJSON a => a -> Value
toJSON b
b)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
2 (forall a. ToJSON a => a -> Value
toJSON c
c)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
3 (a -> Value
toD a
d)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
4 (b -> Value
toE b
e)
forall (m :: * -> *) a. Monad m => a -> m a
return MVector s Value
mv
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> (a, b, c, a, b)
-> Encoding
liftToEncoding2 a -> Encoding
toD [a] -> Encoding
_ b -> Encoding
toE [b] -> Encoding
_ (a
a, b
b, c
c, a
d, b
e) = forall a. (a -> Encoding) -> [a] -> Encoding
E.list forall a. a -> a
id
[ forall a. ToJSON a => a -> Encoding
toEncoding a
a
, forall a. ToJSON a => a -> Encoding
toEncoding b
b
, forall a. ToJSON a => a -> Encoding
toEncoding c
c
, a -> Encoding
toD a
d
, b -> Encoding
toE b
e
]
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d) => ToJSON1 ((,,,,) a b c d) where
liftToJSON :: forall a.
(a -> Value) -> ([a] -> Value) -> (a, b, c, d, a) -> Value
liftToJSON = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
liftToEncoding :: forall a.
(a -> Encoding) -> ([a] -> Encoding) -> (a, b, c, d, a) -> Encoding
liftToEncoding = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e) => ToJSON (a, b, c, d, e) where
toJSON :: (a, b, c, d, e) -> Value
toJSON = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Value
toJSON2
toEncoding :: (a, b, c, d, e) -> Encoding
toEncoding = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Encoding
toEncoding2
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d) => ToJSON2 ((,,,,,) a b c d) where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> (a, b, c, d, a, b)
-> Value
liftToJSON2 a -> Value
toE [a] -> Value
_ b -> Value
toF [b] -> Value
_ (a
a, b
b, c
c, d
d, a
e, b
f) = Array -> Value
Array forall a b. (a -> b) -> a -> b
$ forall a. (forall s. ST s (MVector s a)) -> Vector a
V.create forall a b. (a -> b) -> a -> b
$ do
MVector s Value
mv <- forall (m :: * -> *) a.
PrimMonad m =>
Int -> m (MVector (PrimState m) a)
VM.unsafeNew Int
6
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
0 (forall a. ToJSON a => a -> Value
toJSON a
a)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
1 (forall a. ToJSON a => a -> Value
toJSON b
b)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
2 (forall a. ToJSON a => a -> Value
toJSON c
c)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
3 (forall a. ToJSON a => a -> Value
toJSON d
d)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
4 (a -> Value
toE a
e)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
5 (b -> Value
toF b
f)
forall (m :: * -> *) a. Monad m => a -> m a
return MVector s Value
mv
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> (a, b, c, d, a, b)
-> Encoding
liftToEncoding2 a -> Encoding
toE [a] -> Encoding
_ b -> Encoding
toF [b] -> Encoding
_ (a
a, b
b, c
c, d
d, a
e, b
f) = forall a. (a -> Encoding) -> [a] -> Encoding
E.list forall a. a -> a
id
[ forall a. ToJSON a => a -> Encoding
toEncoding a
a
, forall a. ToJSON a => a -> Encoding
toEncoding b
b
, forall a. ToJSON a => a -> Encoding
toEncoding c
c
, forall a. ToJSON a => a -> Encoding
toEncoding d
d
, a -> Encoding
toE a
e
, b -> Encoding
toF b
f
]
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e) => ToJSON1 ((,,,,,) a b c d e) where
liftToJSON :: forall a.
(a -> Value) -> ([a] -> Value) -> (a, b, c, d, e, a) -> Value
liftToJSON = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
liftToEncoding :: forall a.
(a -> Encoding)
-> ([a] -> Encoding) -> (a, b, c, d, e, a) -> Encoding
liftToEncoding = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f) => ToJSON (a, b, c, d, e, f) where
toJSON :: (a, b, c, d, e, f) -> Value
toJSON = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Value
toJSON2
toEncoding :: (a, b, c, d, e, f) -> Encoding
toEncoding = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Encoding
toEncoding2
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e) => ToJSON2 ((,,,,,,) a b c d e) where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> (a, b, c, d, e, a, b)
-> Value
liftToJSON2 a -> Value
toF [a] -> Value
_ b -> Value
toG [b] -> Value
_ (a
a, b
b, c
c, d
d, e
e, a
f, b
g) = Array -> Value
Array forall a b. (a -> b) -> a -> b
$ forall a. (forall s. ST s (MVector s a)) -> Vector a
V.create forall a b. (a -> b) -> a -> b
$ do
MVector s Value
mv <- forall (m :: * -> *) a.
PrimMonad m =>
Int -> m (MVector (PrimState m) a)
VM.unsafeNew Int
7
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
0 (forall a. ToJSON a => a -> Value
toJSON a
a)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
1 (forall a. ToJSON a => a -> Value
toJSON b
b)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
2 (forall a. ToJSON a => a -> Value
toJSON c
c)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
3 (forall a. ToJSON a => a -> Value
toJSON d
d)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
4 (forall a. ToJSON a => a -> Value
toJSON e
e)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
5 (a -> Value
toF a
f)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
6 (b -> Value
toG b
g)
forall (m :: * -> *) a. Monad m => a -> m a
return MVector s Value
mv
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> (a, b, c, d, e, a, b)
-> Encoding
liftToEncoding2 a -> Encoding
toF [a] -> Encoding
_ b -> Encoding
toG [b] -> Encoding
_ (a
a, b
b, c
c, d
d, e
e, a
f, b
g) = forall a. (a -> Encoding) -> [a] -> Encoding
E.list forall a. a -> a
id
[ forall a. ToJSON a => a -> Encoding
toEncoding a
a
, forall a. ToJSON a => a -> Encoding
toEncoding b
b
, forall a. ToJSON a => a -> Encoding
toEncoding c
c
, forall a. ToJSON a => a -> Encoding
toEncoding d
d
, forall a. ToJSON a => a -> Encoding
toEncoding e
e
, a -> Encoding
toF a
f
, b -> Encoding
toG b
g
]
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f) => ToJSON1 ((,,,,,,) a b c d e f) where
liftToJSON :: forall a.
(a -> Value) -> ([a] -> Value) -> (a, b, c, d, e, f, a) -> Value
liftToJSON = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
liftToEncoding :: forall a.
(a -> Encoding)
-> ([a] -> Encoding) -> (a, b, c, d, e, f, a) -> Encoding
liftToEncoding = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g) => ToJSON (a, b, c, d, e, f, g) where
toJSON :: (a, b, c, d, e, f, g) -> Value
toJSON = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Value
toJSON2
toEncoding :: (a, b, c, d, e, f, g) -> Encoding
toEncoding = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Encoding
toEncoding2
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f) => ToJSON2 ((,,,,,,,) a b c d e f) where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> (a, b, c, d, e, f, a, b)
-> Value
liftToJSON2 a -> Value
toG [a] -> Value
_ b -> Value
toH [b] -> Value
_ (a
a, b
b, c
c, d
d, e
e, f
f, a
g, b
h) = Array -> Value
Array forall a b. (a -> b) -> a -> b
$ forall a. (forall s. ST s (MVector s a)) -> Vector a
V.create forall a b. (a -> b) -> a -> b
$ do
MVector s Value
mv <- forall (m :: * -> *) a.
PrimMonad m =>
Int -> m (MVector (PrimState m) a)
VM.unsafeNew Int
8
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
0 (forall a. ToJSON a => a -> Value
toJSON a
a)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
1 (forall a. ToJSON a => a -> Value
toJSON b
b)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
2 (forall a. ToJSON a => a -> Value
toJSON c
c)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
3 (forall a. ToJSON a => a -> Value
toJSON d
d)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
4 (forall a. ToJSON a => a -> Value
toJSON e
e)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
5 (forall a. ToJSON a => a -> Value
toJSON f
f)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
6 (a -> Value
toG a
g)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
7 (b -> Value
toH b
h)
forall (m :: * -> *) a. Monad m => a -> m a
return MVector s Value
mv
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> (a, b, c, d, e, f, a, b)
-> Encoding
liftToEncoding2 a -> Encoding
toG [a] -> Encoding
_ b -> Encoding
toH [b] -> Encoding
_ (a
a, b
b, c
c, d
d, e
e, f
f, a
g, b
h) = forall a. (a -> Encoding) -> [a] -> Encoding
E.list forall a. a -> a
id
[ forall a. ToJSON a => a -> Encoding
toEncoding a
a
, forall a. ToJSON a => a -> Encoding
toEncoding b
b
, forall a. ToJSON a => a -> Encoding
toEncoding c
c
, forall a. ToJSON a => a -> Encoding
toEncoding d
d
, forall a. ToJSON a => a -> Encoding
toEncoding e
e
, forall a. ToJSON a => a -> Encoding
toEncoding f
f
, a -> Encoding
toG a
g
, b -> Encoding
toH b
h
]
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g) => ToJSON1 ((,,,,,,,) a b c d e f g) where
liftToJSON :: forall a.
(a -> Value) -> ([a] -> Value) -> (a, b, c, d, e, f, g, a) -> Value
liftToJSON = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
liftToEncoding :: forall a.
(a -> Encoding)
-> ([a] -> Encoding) -> (a, b, c, d, e, f, g, a) -> Encoding
liftToEncoding = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
instance (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) where
toJSON :: (a, b, c, d, e, f, g, h) -> Value
toJSON = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Value
toJSON2
toEncoding :: (a, b, c, d, e, f, g, h) -> Encoding
toEncoding = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Encoding
toEncoding2
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g) => ToJSON2 ((,,,,,,,,) a b c d e f g) where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> (a, b, c, d, e, f, g, a, b)
-> Value
liftToJSON2 a -> Value
toH [a] -> Value
_ b -> Value
toI [b] -> Value
_ (a
a, b
b, c
c, d
d, e
e, f
f, g
g, a
h, b
i) = Array -> Value
Array forall a b. (a -> b) -> a -> b
$ forall a. (forall s. ST s (MVector s a)) -> Vector a
V.create forall a b. (a -> b) -> a -> b
$ do
MVector s Value
mv <- forall (m :: * -> *) a.
PrimMonad m =>
Int -> m (MVector (PrimState m) a)
VM.unsafeNew Int
9
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
0 (forall a. ToJSON a => a -> Value
toJSON a
a)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
1 (forall a. ToJSON a => a -> Value
toJSON b
b)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
2 (forall a. ToJSON a => a -> Value
toJSON c
c)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
3 (forall a. ToJSON a => a -> Value
toJSON d
d)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
4 (forall a. ToJSON a => a -> Value
toJSON e
e)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
5 (forall a. ToJSON a => a -> Value
toJSON f
f)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
6 (forall a. ToJSON a => a -> Value
toJSON g
g)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
7 (a -> Value
toH a
h)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
8 (b -> Value
toI b
i)
forall (m :: * -> *) a. Monad m => a -> m a
return MVector s Value
mv
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> (a, b, c, d, e, f, g, a, b)
-> Encoding
liftToEncoding2 a -> Encoding
toH [a] -> Encoding
_ b -> Encoding
toI [b] -> Encoding
_ (a
a, b
b, c
c, d
d, e
e, f
f, g
g, a
h, b
i) = forall a. (a -> Encoding) -> [a] -> Encoding
E.list forall a. a -> a
id
[ forall a. ToJSON a => a -> Encoding
toEncoding a
a
, forall a. ToJSON a => a -> Encoding
toEncoding b
b
, forall a. ToJSON a => a -> Encoding
toEncoding c
c
, forall a. ToJSON a => a -> Encoding
toEncoding d
d
, forall a. ToJSON a => a -> Encoding
toEncoding e
e
, forall a. ToJSON a => a -> Encoding
toEncoding f
f
, forall a. ToJSON a => a -> Encoding
toEncoding g
g
, a -> Encoding
toH a
h
, b -> Encoding
toI b
i
]
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h) => ToJSON1 ((,,,,,,,,) a b c d e f g h) where
liftToJSON :: forall a.
(a -> Value)
-> ([a] -> Value) -> (a, b, c, d, e, f, g, h, a) -> Value
liftToJSON = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
liftToEncoding :: forall a.
(a -> Encoding)
-> ([a] -> Encoding) -> (a, b, c, d, e, f, g, h, a) -> Encoding
liftToEncoding = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
instance (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) where
toJSON :: (a, b, c, d, e, f, g, h, i) -> Value
toJSON = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Value
toJSON2
toEncoding :: (a, b, c, d, e, f, g, h, i) -> Encoding
toEncoding = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Encoding
toEncoding2
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h) => ToJSON2 ((,,,,,,,,,) a b c d e f g h) where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> (a, b, c, d, e, f, g, h, a, b)
-> Value
liftToJSON2 a -> Value
toI [a] -> Value
_ b -> Value
toJ [b] -> Value
_ (a
a, b
b, c
c, d
d, e
e, f
f, g
g, h
h, a
i, b
j) = Array -> Value
Array forall a b. (a -> b) -> a -> b
$ forall a. (forall s. ST s (MVector s a)) -> Vector a
V.create forall a b. (a -> b) -> a -> b
$ do
MVector s Value
mv <- forall (m :: * -> *) a.
PrimMonad m =>
Int -> m (MVector (PrimState m) a)
VM.unsafeNew Int
10
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
0 (forall a. ToJSON a => a -> Value
toJSON a
a)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
1 (forall a. ToJSON a => a -> Value
toJSON b
b)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
2 (forall a. ToJSON a => a -> Value
toJSON c
c)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
3 (forall a. ToJSON a => a -> Value
toJSON d
d)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
4 (forall a. ToJSON a => a -> Value
toJSON e
e)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
5 (forall a. ToJSON a => a -> Value
toJSON f
f)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
6 (forall a. ToJSON a => a -> Value
toJSON g
g)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
7 (forall a. ToJSON a => a -> Value
toJSON h
h)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
8 (a -> Value
toI a
i)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
9 (b -> Value
toJ b
j)
forall (m :: * -> *) a. Monad m => a -> m a
return MVector s Value
mv
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> (a, b, c, d, e, f, g, h, a, b)
-> Encoding
liftToEncoding2 a -> Encoding
toI [a] -> Encoding
_ b -> Encoding
toJ [b] -> Encoding
_ (a
a, b
b, c
c, d
d, e
e, f
f, g
g, h
h, a
i, b
j) = forall a. (a -> Encoding) -> [a] -> Encoding
E.list forall a. a -> a
id
[ forall a. ToJSON a => a -> Encoding
toEncoding a
a
, forall a. ToJSON a => a -> Encoding
toEncoding b
b
, forall a. ToJSON a => a -> Encoding
toEncoding c
c
, forall a. ToJSON a => a -> Encoding
toEncoding d
d
, forall a. ToJSON a => a -> Encoding
toEncoding e
e
, forall a. ToJSON a => a -> Encoding
toEncoding f
f
, forall a. ToJSON a => a -> Encoding
toEncoding g
g
, forall a. ToJSON a => a -> Encoding
toEncoding h
h
, a -> Encoding
toI a
i
, b -> Encoding
toJ b
j
]
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i) => ToJSON1 ((,,,,,,,,,) a b c d e f g h i) where
liftToJSON :: forall a.
(a -> Value)
-> ([a] -> Value) -> (a, b, c, d, e, f, g, h, i, a) -> Value
liftToJSON = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
liftToEncoding :: forall a.
(a -> Encoding)
-> ([a] -> Encoding) -> (a, b, c, d, e, f, g, h, i, a) -> Encoding
liftToEncoding = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
instance (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) where
toJSON :: (a, b, c, d, e, f, g, h, i, j) -> Value
toJSON = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Value
toJSON2
toEncoding :: (a, b, c, d, e, f, g, h, i, j) -> Encoding
toEncoding = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Encoding
toEncoding2
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i) => ToJSON2 ((,,,,,,,,,,) a b c d e f g h i) where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> (a, b, c, d, e, f, g, h, i, a, b)
-> Value
liftToJSON2 a -> Value
toJ [a] -> Value
_ b -> Value
toK [b] -> Value
_ (a
a, b
b, c
c, d
d, e
e, f
f, g
g, h
h, i
i, a
j, b
k) = Array -> Value
Array forall a b. (a -> b) -> a -> b
$ forall a. (forall s. ST s (MVector s a)) -> Vector a
V.create forall a b. (a -> b) -> a -> b
$ do
MVector s Value
mv <- forall (m :: * -> *) a.
PrimMonad m =>
Int -> m (MVector (PrimState m) a)
VM.unsafeNew Int
11
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
0 (forall a. ToJSON a => a -> Value
toJSON a
a)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
1 (forall a. ToJSON a => a -> Value
toJSON b
b)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
2 (forall a. ToJSON a => a -> Value
toJSON c
c)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
3 (forall a. ToJSON a => a -> Value
toJSON d
d)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
4 (forall a. ToJSON a => a -> Value
toJSON e
e)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
5 (forall a. ToJSON a => a -> Value
toJSON f
f)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
6 (forall a. ToJSON a => a -> Value
toJSON g
g)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
7 (forall a. ToJSON a => a -> Value
toJSON h
h)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
8 (forall a. ToJSON a => a -> Value
toJSON i
i)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
9 (a -> Value
toJ a
j)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
10 (b -> Value
toK b
k)
forall (m :: * -> *) a. Monad m => a -> m a
return MVector s Value
mv
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> (a, b, c, d, e, f, g, h, i, a, b)
-> Encoding
liftToEncoding2 a -> Encoding
toJ [a] -> Encoding
_ b -> Encoding
toK [b] -> Encoding
_ (a
a, b
b, c
c, d
d, e
e, f
f, g
g, h
h, i
i, a
j, b
k) = forall a. (a -> Encoding) -> [a] -> Encoding
E.list forall a. a -> a
id
[ forall a. ToJSON a => a -> Encoding
toEncoding a
a
, forall a. ToJSON a => a -> Encoding
toEncoding b
b
, forall a. ToJSON a => a -> Encoding
toEncoding c
c
, forall a. ToJSON a => a -> Encoding
toEncoding d
d
, forall a. ToJSON a => a -> Encoding
toEncoding e
e
, forall a. ToJSON a => a -> Encoding
toEncoding f
f
, forall a. ToJSON a => a -> Encoding
toEncoding g
g
, forall a. ToJSON a => a -> Encoding
toEncoding h
h
, forall a. ToJSON a => a -> Encoding
toEncoding i
i
, a -> Encoding
toJ a
j
, b -> Encoding
toK b
k
]
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i, ToJSON j) => ToJSON1 ((,,,,,,,,,,) a b c d e f g h i j) where
liftToJSON :: forall a.
(a -> Value)
-> ([a] -> Value) -> (a, b, c, d, e, f, g, h, i, j, a) -> Value
liftToJSON = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
liftToEncoding :: forall a.
(a -> Encoding)
-> ([a] -> Encoding)
-> (a, b, c, d, e, f, g, h, i, j, a)
-> Encoding
liftToEncoding = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
instance (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) where
toJSON :: (a, b, c, d, e, f, g, h, i, j, k) -> Value
toJSON = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Value
toJSON2
toEncoding :: (a, b, c, d, e, f, g, h, i, j, k) -> Encoding
toEncoding = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Encoding
toEncoding2
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i, ToJSON j) => ToJSON2 ((,,,,,,,,,,,) a b c d e f g h i j) where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> (a, b, c, d, e, f, g, h, i, j, a, b)
-> Value
liftToJSON2 a -> Value
toK [a] -> Value
_ b -> Value
toL [b] -> Value
_ (a
a, b
b, c
c, d
d, e
e, f
f, g
g, h
h, i
i, j
j, a
k, b
l) = Array -> Value
Array forall a b. (a -> b) -> a -> b
$ forall a. (forall s. ST s (MVector s a)) -> Vector a
V.create forall a b. (a -> b) -> a -> b
$ do
MVector s Value
mv <- forall (m :: * -> *) a.
PrimMonad m =>
Int -> m (MVector (PrimState m) a)
VM.unsafeNew Int
12
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
0 (forall a. ToJSON a => a -> Value
toJSON a
a)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
1 (forall a. ToJSON a => a -> Value
toJSON b
b)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
2 (forall a. ToJSON a => a -> Value
toJSON c
c)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
3 (forall a. ToJSON a => a -> Value
toJSON d
d)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
4 (forall a. ToJSON a => a -> Value
toJSON e
e)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
5 (forall a. ToJSON a => a -> Value
toJSON f
f)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
6 (forall a. ToJSON a => a -> Value
toJSON g
g)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
7 (forall a. ToJSON a => a -> Value
toJSON h
h)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
8 (forall a. ToJSON a => a -> Value
toJSON i
i)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
9 (forall a. ToJSON a => a -> Value
toJSON j
j)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
10 (a -> Value
toK a
k)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
11 (b -> Value
toL b
l)
forall (m :: * -> *) a. Monad m => a -> m a
return MVector s Value
mv
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> (a, b, c, d, e, f, g, h, i, j, a, b)
-> Encoding
liftToEncoding2 a -> Encoding
toK [a] -> Encoding
_ b -> Encoding
toL [b] -> Encoding
_ (a
a, b
b, c
c, d
d, e
e, f
f, g
g, h
h, i
i, j
j, a
k, b
l) = forall a. (a -> Encoding) -> [a] -> Encoding
E.list forall a. a -> a
id
[ forall a. ToJSON a => a -> Encoding
toEncoding a
a
, forall a. ToJSON a => a -> Encoding
toEncoding b
b
, forall a. ToJSON a => a -> Encoding
toEncoding c
c
, forall a. ToJSON a => a -> Encoding
toEncoding d
d
, forall a. ToJSON a => a -> Encoding
toEncoding e
e
, forall a. ToJSON a => a -> Encoding
toEncoding f
f
, forall a. ToJSON a => a -> Encoding
toEncoding g
g
, forall a. ToJSON a => a -> Encoding
toEncoding h
h
, forall a. ToJSON a => a -> Encoding
toEncoding i
i
, forall a. ToJSON a => a -> Encoding
toEncoding j
j
, a -> Encoding
toK a
k
, b -> Encoding
toL b
l
]
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i, ToJSON j, ToJSON k) => ToJSON1 ((,,,,,,,,,,,) a b c d e f g h i j k) where
liftToJSON :: forall a.
(a -> Value)
-> ([a] -> Value) -> (a, b, c, d, e, f, g, h, i, j, k, a) -> Value
liftToJSON = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
liftToEncoding :: forall a.
(a -> Encoding)
-> ([a] -> Encoding)
-> (a, b, c, d, e, f, g, h, i, j, k, a)
-> Encoding
liftToEncoding = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
instance (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) where
toJSON :: (a, b, c, d, e, f, g, h, i, j, k, l) -> Value
toJSON = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Value
toJSON2
toEncoding :: (a, b, c, d, e, f, g, h, i, j, k, l) -> Encoding
toEncoding = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Encoding
toEncoding2
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i, ToJSON j, ToJSON k) => ToJSON2 ((,,,,,,,,,,,,) a b c d e f g h i j k) where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> (a, b, c, d, e, f, g, h, i, j, k, a, b)
-> Value
liftToJSON2 a -> Value
toL [a] -> Value
_ b -> Value
toM [b] -> Value
_ (a
a, b
b, c
c, d
d, e
e, f
f, g
g, h
h, i
i, j
j, k
k, a
l, b
m) = Array -> Value
Array forall a b. (a -> b) -> a -> b
$ forall a. (forall s. ST s (MVector s a)) -> Vector a
V.create forall a b. (a -> b) -> a -> b
$ do
MVector s Value
mv <- forall (m :: * -> *) a.
PrimMonad m =>
Int -> m (MVector (PrimState m) a)
VM.unsafeNew Int
13
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
0 (forall a. ToJSON a => a -> Value
toJSON a
a)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
1 (forall a. ToJSON a => a -> Value
toJSON b
b)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
2 (forall a. ToJSON a => a -> Value
toJSON c
c)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
3 (forall a. ToJSON a => a -> Value
toJSON d
d)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
4 (forall a. ToJSON a => a -> Value
toJSON e
e)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
5 (forall a. ToJSON a => a -> Value
toJSON f
f)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
6 (forall a. ToJSON a => a -> Value
toJSON g
g)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
7 (forall a. ToJSON a => a -> Value
toJSON h
h)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
8 (forall a. ToJSON a => a -> Value
toJSON i
i)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
9 (forall a. ToJSON a => a -> Value
toJSON j
j)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
10 (forall a. ToJSON a => a -> Value
toJSON k
k)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
11 (a -> Value
toL a
l)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
12 (b -> Value
toM b
m)
forall (m :: * -> *) a. Monad m => a -> m a
return MVector s Value
mv
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> (a, b, c, d, e, f, g, h, i, j, k, a, b)
-> Encoding
liftToEncoding2 a -> Encoding
toL [a] -> Encoding
_ b -> Encoding
toM [b] -> Encoding
_ (a
a, b
b, c
c, d
d, e
e, f
f, g
g, h
h, i
i, j
j, k
k, a
l, b
m) = forall a. (a -> Encoding) -> [a] -> Encoding
E.list forall a. a -> a
id
[ forall a. ToJSON a => a -> Encoding
toEncoding a
a
, forall a. ToJSON a => a -> Encoding
toEncoding b
b
, forall a. ToJSON a => a -> Encoding
toEncoding c
c
, forall a. ToJSON a => a -> Encoding
toEncoding d
d
, forall a. ToJSON a => a -> Encoding
toEncoding e
e
, forall a. ToJSON a => a -> Encoding
toEncoding f
f
, forall a. ToJSON a => a -> Encoding
toEncoding g
g
, forall a. ToJSON a => a -> Encoding
toEncoding h
h
, forall a. ToJSON a => a -> Encoding
toEncoding i
i
, forall a. ToJSON a => a -> Encoding
toEncoding j
j
, forall a. ToJSON a => a -> Encoding
toEncoding k
k
, a -> Encoding
toL a
l
, b -> Encoding
toM b
m
]
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i, ToJSON j, ToJSON k, ToJSON l) => ToJSON1 ((,,,,,,,,,,,,) a b c d e f g h i j k l) where
liftToJSON :: forall a.
(a -> Value)
-> ([a] -> Value)
-> (a, b, c, d, e, f, g, h, i, j, k, l, a)
-> Value
liftToJSON = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
liftToEncoding :: forall a.
(a -> Encoding)
-> ([a] -> Encoding)
-> (a, b, c, d, e, f, g, h, i, j, k, l, a)
-> Encoding
liftToEncoding = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
instance (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) where
toJSON :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Value
toJSON = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Value
toJSON2
toEncoding :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Encoding
toEncoding = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Encoding
toEncoding2
instance (ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i, ToJSON j, ToJSON k, ToJSON l) => ToJSON2 ((,,,,,,,,,,,,,) a b c d e f g h i j k l) where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> (a, b, c, d, e, f, g, h, i, j, k, l, a, b)
-> Value
liftToJSON2 a -> Value
toM [a] -> Value
_ b -> Value
toN [b] -> Value
_ (a
a, b
b, c
c, d
d, e
e, f
f, g
g, h
h, i
i, j
j, k
k, l
l, a
m, b
n) = Array -> Value
Array forall a b. (a -> b) -> a -> b
$ forall a. (forall s. ST s (MVector s a)) -> Vector a
V.create forall a b. (a -> b) -> a -> b
$ do
MVector s Value
mv <- forall (m :: * -> *) a.
PrimMonad m =>
Int -> m (MVector (PrimState m) a)
VM.unsafeNew Int
14
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
0 (forall a. ToJSON a => a -> Value
toJSON a
a)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
1 (forall a. ToJSON a => a -> Value
toJSON b
b)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
2 (forall a. ToJSON a => a -> Value
toJSON c
c)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
3 (forall a. ToJSON a => a -> Value
toJSON d
d)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
4 (forall a. ToJSON a => a -> Value
toJSON e
e)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
5 (forall a. ToJSON a => a -> Value
toJSON f
f)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
6 (forall a. ToJSON a => a -> Value
toJSON g
g)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
7 (forall a. ToJSON a => a -> Value
toJSON h
h)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
8 (forall a. ToJSON a => a -> Value
toJSON i
i)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
9 (forall a. ToJSON a => a -> Value
toJSON j
j)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
10 (forall a. ToJSON a => a -> Value
toJSON k
k)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
11 (forall a. ToJSON a => a -> Value
toJSON l
l)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
12 (a -> Value
toM a
m)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
13 (b -> Value
toN b
n)
forall (m :: * -> *) a. Monad m => a -> m a
return MVector s Value
mv
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> (a, b, c, d, e, f, g, h, i, j, k, l, a, b)
-> Encoding
liftToEncoding2 a -> Encoding
toM [a] -> Encoding
_ b -> Encoding
toN [b] -> Encoding
_ (a
a, b
b, c
c, d
d, e
e, f
f, g
g, h
h, i
i, j
j, k
k, l
l, a
m, b
n) = forall a. (a -> Encoding) -> [a] -> Encoding
E.list forall a. a -> a
id
[ forall a. ToJSON a => a -> Encoding
toEncoding a
a
, forall a. ToJSON a => a -> Encoding
toEncoding b
b
, forall a. ToJSON a => a -> Encoding
toEncoding c
c
, forall a. ToJSON a => a -> Encoding
toEncoding d
d
, forall a. ToJSON a => a -> Encoding
toEncoding e
e
, forall a. ToJSON a => a -> Encoding
toEncoding f
f
, forall a. ToJSON a => a -> Encoding
toEncoding g
g
, forall a. ToJSON a => a -> Encoding
toEncoding h
h
, forall a. ToJSON a => a -> Encoding
toEncoding i
i
, forall a. ToJSON a => a -> Encoding
toEncoding j
j
, forall a. ToJSON a => a -> Encoding
toEncoding k
k
, forall a. ToJSON a => a -> Encoding
toEncoding l
l
, a -> Encoding
toM a
m
, b -> Encoding
toN b
n
]
instance (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) => ToJSON1 ((,,,,,,,,,,,,,) a b c d e f g h i j k l m) where
liftToJSON :: forall a.
(a -> Value)
-> ([a] -> Value)
-> (a, b, c, d, e, f, g, h, i, j, k, l, m, a)
-> Value
liftToJSON = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
liftToEncoding :: forall a.
(a -> Encoding)
-> ([a] -> Encoding)
-> (a, b, c, d, e, f, g, h, i, j, k, l, m, a)
-> Encoding
liftToEncoding = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
instance (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) where
toJSON :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Value
toJSON = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Value
toJSON2
toEncoding :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Encoding
toEncoding = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Encoding
toEncoding2
instance (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) => ToJSON2 ((,,,,,,,,,,,,,,) a b c d e f g h i j k l m) where
liftToJSON2 :: forall a b.
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> (a, b, c, d, e, f, g, h, i, j, k, l, m, a, b)
-> Value
liftToJSON2 a -> Value
toN [a] -> Value
_ b -> Value
toO [b] -> Value
_ (a
a, b
b, c
c, d
d, e
e, f
f, g
g, h
h, i
i, j
j, k
k, l
l, m
m, a
n, b
o) = Array -> Value
Array forall a b. (a -> b) -> a -> b
$ forall a. (forall s. ST s (MVector s a)) -> Vector a
V.create forall a b. (a -> b) -> a -> b
$ do
MVector s Value
mv <- forall (m :: * -> *) a.
PrimMonad m =>
Int -> m (MVector (PrimState m) a)
VM.unsafeNew Int
15
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
0 (forall a. ToJSON a => a -> Value
toJSON a
a)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
1 (forall a. ToJSON a => a -> Value
toJSON b
b)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
2 (forall a. ToJSON a => a -> Value
toJSON c
c)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
3 (forall a. ToJSON a => a -> Value
toJSON d
d)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
4 (forall a. ToJSON a => a -> Value
toJSON e
e)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
5 (forall a. ToJSON a => a -> Value
toJSON f
f)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
6 (forall a. ToJSON a => a -> Value
toJSON g
g)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
7 (forall a. ToJSON a => a -> Value
toJSON h
h)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
8 (forall a. ToJSON a => a -> Value
toJSON i
i)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
9 (forall a. ToJSON a => a -> Value
toJSON j
j)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
10 (forall a. ToJSON a => a -> Value
toJSON k
k)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
11 (forall a. ToJSON a => a -> Value
toJSON l
l)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
12 (forall a. ToJSON a => a -> Value
toJSON m
m)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
13 (a -> Value
toN a
n)
forall (m :: * -> *) a.
PrimMonad m =>
MVector (PrimState m) a -> Int -> a -> m ()
VM.unsafeWrite MVector s Value
mv Int
14 (b -> Value
toO b
o)
forall (m :: * -> *) a. Monad m => a -> m a
return MVector s Value
mv
liftToEncoding2 :: forall a b.
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> (a, b, c, d, e, f, g, h, i, j, k, l, m, a, b)
-> Encoding
liftToEncoding2 a -> Encoding
toN [a] -> Encoding
_ b -> Encoding
toO [b] -> Encoding
_ (a
a, b
b, c
c, d
d, e
e, f
f, g
g, h
h, i
i, j
j, k
k, l
l, m
m, a
n, b
o) = forall a. (a -> Encoding) -> [a] -> Encoding
E.list forall a. a -> a
id
[ forall a. ToJSON a => a -> Encoding
toEncoding a
a
, forall a. ToJSON a => a -> Encoding
toEncoding b
b
, forall a. ToJSON a => a -> Encoding
toEncoding c
c
, forall a. ToJSON a => a -> Encoding
toEncoding d
d
, forall a. ToJSON a => a -> Encoding
toEncoding e
e
, forall a. ToJSON a => a -> Encoding
toEncoding f
f
, forall a. ToJSON a => a -> Encoding
toEncoding g
g
, forall a. ToJSON a => a -> Encoding
toEncoding h
h
, forall a. ToJSON a => a -> Encoding
toEncoding i
i
, forall a. ToJSON a => a -> Encoding
toEncoding j
j
, forall a. ToJSON a => a -> Encoding
toEncoding k
k
, forall a. ToJSON a => a -> Encoding
toEncoding l
l
, forall a. ToJSON a => a -> Encoding
toEncoding m
m
, a -> Encoding
toN a
n
, b -> Encoding
toO b
o
]
instance (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) => ToJSON1 ((,,,,,,,,,,,,,,) a b c d e f g h i j k l m n) where
liftToJSON :: forall a.
(a -> Value)
-> ([a] -> Value)
-> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, a)
-> Value
liftToJSON = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Value)
-> ([a] -> Value)
-> (b -> Value)
-> ([b] -> Value)
-> f a b
-> Value
liftToJSON2 forall a. ToJSON a => a -> Value
toJSON forall a. ToJSON a => [a] -> Value
toJSONList
liftToEncoding :: forall a.
(a -> Encoding)
-> ([a] -> Encoding)
-> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, a)
-> Encoding
liftToEncoding = forall (f :: * -> * -> *) a b.
ToJSON2 f =>
(a -> Encoding)
-> ([a] -> Encoding)
-> (b -> Encoding)
-> ([b] -> Encoding)
-> f a b
-> Encoding
liftToEncoding2 forall a. ToJSON a => a -> Encoding
toEncoding forall a. ToJSON a => [a] -> Encoding
toEncodingList
instance (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) where
toJSON :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Value
toJSON = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Value
toJSON2
toEncoding :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Encoding
toEncoding = forall (f :: * -> * -> *) a b.
(ToJSON2 f, ToJSON a, ToJSON b) =>
f a b -> Encoding
toEncoding2
class Monoid pairs => FromPairs enc pairs | enc -> pairs where
fromPairs :: pairs -> enc
instance (a ~ Value) => FromPairs (Encoding' a) Series where
fromPairs :: Series -> Encoding' a
fromPairs = Series -> Encoding
E.pairs
{-# INLINE fromPairs #-}
instance FromPairs Value (DList Pair) where
fromPairs :: DList Pair -> Value
fromPairs = [Pair] -> Value
object forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) a. Foldable t => t a -> [a]
toList
{-# INLINE fromPairs #-}
class Monoid kv => KeyValuePair v kv where
pair :: Key -> v -> kv
instance (v ~ Value) => KeyValuePair v (DList Pair) where
pair :: Key -> v -> DList Pair
pair Key
k v
v = forall a. a -> DList a
DList.singleton (Key
k forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= v
v)
{-# INLINE pair #-}
instance (e ~ Encoding) => KeyValuePair e Series where
pair :: Key -> e -> Series
pair = Key -> Encoding -> Series
E.pair
{-# INLINE pair #-}