serokell-util-0.10.0: General-purpose functions by Serokell

Safe HaskellNone
LanguageHaskell2010

Serokell.Data.Variant

Description

Variant is a data type with dynamic structure. It's designed to be very generic, but also efficient. You can choose whatever data layout you want. This module re-exports modules relevant to this type.

Synopsis

Documentation

data Variant Source #

Variant is intended to store arbitrary data in arbitrary format. You are free to choose data layout.

Constructors

VarNone

None, i. e. no value.

VarBool !Bool

Boolean value.

VarInt !Int64

Signed integer number.

VarUInt !Word64

Unsigned integer number.

VarFloat !Double

IEEE 754 double precision floating point number.

VarBytes !ByteString

Raw bytes.

VarString !Text

Unicode string.

VarList !VarList

List of Variants.

VarMap !VarMap

Map (with unique keys) from Variant to Variant.

Instances
IsList Variant Source # 
Instance details

Defined in Serokell.Data.Variant.Variant

Associated Types

type Item Variant :: * #

Eq Variant Source # 
Instance details

Defined in Serokell.Data.Variant.Variant

Methods

(==) :: Variant -> Variant -> Bool #

(/=) :: Variant -> Variant -> Bool #

Show Variant Source # 
Instance details

Defined in Serokell.Data.Variant.Variant

IsString Variant Source # 
Instance details

Defined in Serokell.Data.Variant.Variant

Methods

fromString :: String -> Variant #

Generic Variant Source # 
Instance details

Defined in Serokell.Data.Variant.Variant

Associated Types

type Rep Variant :: * -> * #

Methods

from :: Variant -> Rep Variant x #

to :: Rep Variant x -> Variant #

Arbitrary Variant # 
Instance details

Defined in Serokell.Arbitrary

Hashable Variant Source # 
Instance details

Defined in Serokell.Data.Variant.Variant

Methods

hashWithSalt :: Int -> Variant -> Int #

hash :: Variant -> Int #

ToJSON Variant # 
Instance details

Defined in Serokell.Data.Variant.Serialization

FromJSON Variant # 
Instance details

Defined in Serokell.Data.Variant.Serialization

NFData Variant Source # 
Instance details

Defined in Serokell.Data.Variant.Variant

Methods

rnf :: Variant -> () #

Buildable Variant Source # 
Instance details

Defined in Serokell.Data.Variant.Variant

Methods

build :: Variant -> Builder #

Hashable (Vector Variant) Source # 
Instance details

Defined in Serokell.Data.Variant.Variant

type Rep Variant Source # 
Instance details

Defined in Serokell.Data.Variant.Variant

type Item Variant Source # 
Instance details

Defined in Serokell.Data.Variant.Variant

none :: Variant Source #

Shorter alias for VarNone.

varMap :: (Container t, Element t ~ (Variant, Variant)) => t -> Variant Source #

Create VarMap from Foldable containing pairs of Variants. TODO: maybe use better approach like `a := b` to create KeyValuePair.

class ToVariant v where Source #

Minimal complete definition

toVariant

Methods

toVariant :: v -> Variant Source #

Instances
ToVariant Bool Source # 
Instance details

Defined in Serokell.Data.Variant.Class

ToVariant Double Source # 
Instance details

Defined in Serokell.Data.Variant.Class

class FromVariant v where Source #

Minimal complete definition

fromVariant

Methods

fromVariant :: MonadThrow m => Variant -> m v Source #

Instances
FromVariant Double Source # 
Instance details

Defined in Serokell.Data.Variant.Class