json-encoder-0.1.8: A direct-to-bytes single-pass JSON encoder with a declarative DSL

Safe HaskellNone
LanguageHaskell2010

JSONEncoder

Contents

Synopsis

Documentation

run :: Value a -> a -> Builder Source #

Value

data Value a Source #

Instances

Divisible Value Source # 

Methods

divide :: (a -> (b, c)) -> Value b -> Value c -> Value a #

conquer :: Value a #

Decidable Value Source # 

Methods

lose :: (a -> Void) -> Value a #

choose :: (a -> Either b c) -> Value b -> Value c -> Value a #

Contravariant Value Source # 

Methods

contramap :: (a -> b) -> Value b -> Value a #

(>$) :: b -> Value b -> Value a #

Object

data Object a Source #

Instances

Divisible Object Source # 

Methods

divide :: (a -> (b, c)) -> Object b -> Object c -> Object a #

conquer :: Object a #

Decidable Object Source # 

Methods

lose :: (a -> Void) -> Object a #

choose :: (a -> Either b c) -> Object b -> Object c -> Object a #

Contravariant Object Source # 

Methods

contramap :: (a -> b) -> Object b -> Object a #

(>$) :: b -> Object b -> Object a #

Semigroup (Object a) Source # 

Methods

(<>) :: Object a -> Object a -> Object a #

sconcat :: NonEmpty (Object a) -> Object a #

stimes :: Integral b => b -> Object a -> Object a #

Monoid (Object a) Source # 

Methods

mempty :: Object a #

mappend :: Object a -> Object a -> Object a #

mconcat :: [Object a] -> Object a #

field :: Text -> Value a -> Object a Source #

row :: Value a -> Object (Text, a) Source #

Array

data Array a Source #

Instances

Contravariant Array Source # 

Methods

contramap :: (a -> b) -> Array b -> Array a #

(>$) :: b -> Array b -> Array a #

homo :: (forall a. (a -> b -> a) -> a -> c -> a) -> Value b -> Array c Source #

A homogenous array.

hetero :: Hetero a -> Array a Source #

A heterogenous array encoder.

Hetero

data Hetero a Source #

Instances

Divisible Hetero Source # 

Methods

divide :: (a -> (b, c)) -> Hetero b -> Hetero c -> Hetero a #

conquer :: Hetero a #

Decidable Hetero Source # 

Methods

lose :: (a -> Void) -> Hetero a #

choose :: (a -> Either b c) -> Hetero b -> Hetero c -> Hetero a #

Contravariant Hetero Source # 

Methods

contramap :: (a -> b) -> Hetero b -> Hetero a #

(>$) :: b -> Hetero b -> Hetero a #

Semigroup (Hetero a) Source # 

Methods

(<>) :: Hetero a -> Hetero a -> Hetero a #

sconcat :: NonEmpty (Hetero a) -> Hetero a #

stimes :: Integral b => b -> Hetero a -> Hetero a #

Monoid (Hetero a) Source # 

Methods

mempty :: Hetero a #

mappend :: Hetero a -> Hetero a -> Hetero a #

mconcat :: [Hetero a] -> Hetero a #