packages feed

debug-print-0.0.0.0: library/DebugPrint/Types.hs

-- | A general structure to which data values may be converted
--
-- This is often useful for testing and logging to get an output that is
-- more structured and better pretty-printed than what 'show' can offer.
module DebugPrint.Types
  ( DebugPrintRecord (..)
  , DebugPrintValue (..)
  ) where

import Prelude

import Data.Map (Map)
import Data.String (IsString (..))
import Data.Text (Text)
import Data.Text qualified as T
import Data.Vector (Vector)

newtype DebugPrintRecord = DebugPrintRecord (Map Text DebugPrintValue)
  deriving newtype (Monoid, Semigroup)

data DebugPrintValue
  = DebugPrintValueInt Int
  | DebugPrintValueText Text
  | DebugPrintValueBool Bool
  | DebugPrintValueVector (Vector DebugPrintValue)
  | DebugPrintValueRecord DebugPrintRecord

instance IsString DebugPrintValue where
  fromString = DebugPrintValueText . T.pack