aeson-possible-0.1.0.0: Possible values for aeson
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Aeson.Possible

Description

Three-valued possible types for use with aeson.

Useful for use in PATCH endpoints: use in records which have ToJSON and FromJSON instances.

See the README for suggested usage.

The Alternative instance can be used to update a record (with PATCH data) as the LHS data is kept unless it is missing:

-- PATCH uses new data
HaveData new <|> old == HaveData new

-- PATCH sets null
HaveNull <|> old == HaveNull

-- PATCH did not change data
Missing <|> old == old

Documentation

data Possible a Source #

Constructors

Missing 
HaveNull 
HaveData a 

Instances

Instances details
Alternative Possible Source #

Similar to the Alternative Maybe instance, picks the leftmost HaveData value.

Instance details

Defined in Data.Aeson.Possible

Methods

empty :: Possible a #

(<|>) :: Possible a -> Possible a -> Possible a #

some :: Possible a -> Possible [a] #

many :: Possible a -> Possible [a] #

Applicative Possible Source # 
Instance details

Defined in Data.Aeson.Possible

Methods

pure :: a -> Possible a #

(<*>) :: Possible (a -> b) -> Possible a -> Possible b #

liftA2 :: (a -> b -> c) -> Possible a -> Possible b -> Possible c #

(*>) :: Possible a -> Possible b -> Possible b #

(<*) :: Possible a -> Possible b -> Possible a #

Functor Possible Source # 
Instance details

Defined in Data.Aeson.Possible

Methods

fmap :: (a -> b) -> Possible a -> Possible b #

(<$) :: a -> Possible b -> Possible a #

Generic (Possible a) Source # 
Instance details

Defined in Data.Aeson.Possible

Associated Types

type Rep (Possible a) :: Type -> Type #

Methods

from :: Possible a -> Rep (Possible a) x #

to :: Rep (Possible a) x -> Possible a #

Show a => Show (Possible a) Source # 
Instance details

Defined in Data.Aeson.Possible

Methods

showsPrec :: Int -> Possible a -> ShowS #

show :: Possible a -> String #

showList :: [Possible a] -> ShowS #

Eq a => Eq (Possible a) Source # 
Instance details

Defined in Data.Aeson.Possible

Methods

(==) :: Possible a -> Possible a -> Bool #

(/=) :: Possible a -> Possible a -> Bool #

FromJSON a => FromJSON (Possible a) Source #

Uses omittedField to default to Missing

Instance details

Defined in Data.Aeson.Possible

ToJSON a => ToJSON (Possible a) Source #

Uses toMaybe to implement toJSON and toEncoding, and aeson's omitField to specify when the field should be left out.

Note that unless the Possible value is encoded as an object field it will be null even when you have a Missing value. _e.g._ `[Missing, HaveNull, HaveData 42]` will be encoded as `[null,null,42]`

Instance details

Defined in Data.Aeson.Possible

type Rep (Possible a) Source # 
Instance details

Defined in Data.Aeson.Possible

type Rep (Possible a) = D1 ('MetaData "Possible" "Data.Aeson.Possible" "aeson-possible-0.1.0.0-inplace" 'False) (C1 ('MetaCons "Missing" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "HaveNull" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "HaveData" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))