Copyright | (C) 2015-2017 Oleg Grenrus |
---|---|
License | BSD3 |
Maintainer | Oleg Grenrus <oleg.grenrus@iki.fi> |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Data.Aeson.Extra.Recursive
Contents
Description
Helps writing recursive algorithms on Value
, for example:
stripNulls :: Value -> Value stripNulls =cata
(embed
. f) where f (ObjectF a) = ObjectF $ HM.filter (== Null) a f x = x
Documentation
An algebra of Value
Since: aeson-extra-0.3.1.0
Constructors
ObjectF (ObjectF a) | |
ArrayF !(ArrayF a) | |
StringF !Text | |
NumberF !Scientific | |
BoolF !Bool | |
NullF |
Instances
Foldable ValueF Source # | |
Defined in Data.Aeson.Extra.Recursive Methods fold :: Monoid m => ValueF m -> m Source # foldMap :: Monoid m => (a -> m) -> ValueF a -> m Source # foldMap' :: Monoid m => (a -> m) -> ValueF a -> m Source # foldr :: (a -> b -> b) -> b -> ValueF a -> b Source # foldr' :: (a -> b -> b) -> b -> ValueF a -> b Source # foldl :: (b -> a -> b) -> b -> ValueF a -> b Source # foldl' :: (b -> a -> b) -> b -> ValueF a -> b Source # foldr1 :: (a -> a -> a) -> ValueF a -> a Source # foldl1 :: (a -> a -> a) -> ValueF a -> a Source # toList :: ValueF a -> [a] Source # null :: ValueF a -> Bool Source # length :: ValueF a -> Int Source # elem :: Eq a => a -> ValueF a -> Bool Source # maximum :: Ord a => ValueF a -> a Source # minimum :: Ord a => ValueF a -> a Source # | |
Traversable ValueF Source # | |
Defined in Data.Aeson.Extra.Recursive | |
Functor ValueF Source # | |
Data a => Data (ValueF a) Source # | |
Defined in Data.Aeson.Extra.Recursive Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ValueF a -> c (ValueF a) Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ValueF a) Source # toConstr :: ValueF a -> Constr Source # dataTypeOf :: ValueF a -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (ValueF a)) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (ValueF a)) Source # gmapT :: (forall b. Data b => b -> b) -> ValueF a -> ValueF a Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ValueF a -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ValueF a -> r Source # gmapQ :: (forall d. Data d => d -> u) -> ValueF a -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> ValueF a -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ValueF a -> m (ValueF a) Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ValueF a -> m (ValueF a) Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ValueF a -> m (ValueF a) Source # | |
Read a => Read (ValueF a) Source # | |
Show a => Show (ValueF a) Source # | |
Eq a => Eq (ValueF a) Source # | |
Orphan instances
Corecursive Value Source # | |
Methods embed :: Base Value Value -> Value ana :: (a -> Base Value a) -> a -> Value apo :: (a -> Base Value (Either Value a)) -> a -> Value postpro :: Recursive Value => (forall b. Base Value b -> Base Value b) -> (a -> Base Value a) -> a -> Value gpostpro :: (Recursive Value, Monad m) => (forall b. m (Base Value b) -> Base Value (m b)) -> (forall c. Base Value c -> Base Value c) -> (a -> Base Value (m a)) -> a -> Value | |
Recursive Value Source # | |
Methods project :: Value -> Base Value Value cata :: (Base Value a -> a) -> Value -> a para :: (Base Value (Value, a) -> a) -> Value -> a gpara :: (Corecursive Value, Comonad w) => (forall b. Base Value (w b) -> w (Base Value b)) -> (Base Value (EnvT Value w a) -> a) -> Value -> a prepro :: Corecursive Value => (forall b. Base Value b -> Base Value b) -> (Base Value a -> a) -> Value -> a gprepro :: (Corecursive Value, Comonad w) => (forall b. Base Value (w b) -> w (Base Value b)) -> (forall c. Base Value c -> Base Value c) -> (Base Value (w a) -> a) -> Value -> a |