packages feed

hsjuiz-0.2.6: src/Juiz/Value.hs

-- | juiz の値 (Rust 側の serde_json::Value) を Haskell で表す型。
--
-- aeson の 'Data.Aeson.Value' に相当するが、juiz と同じく整数 ('JInt', 'JUInt') と小数 ('JFloat') を分けて持つ。
-- Haskell の値との変換は "Juiz.Capsule" の 'Juiz.Capsule.FromCapsule' / 'Juiz.Capsule.ToCapsule' で行う。
module Juiz.Value
  ( Value (..)
  ) where

import Data.Int (Int64)
import Data.Map.Strict (Map)
import Data.Text (Text)
import Data.Word (Word64)

data Value
  = JNull
  | JBool !Bool
  | JInt !Int64
  -- | Int64 に収まらない正の整数
  | JUInt !Word64
  | JFloat !Double
  | JString !Text
  | JArray ![Value]
  | JObject !(Map Text Value)
  deriving (Eq, Show)