packages feed

packstream-bolt-0.1.0.0: src/Data/PackStream/Assoc.hs

-- | Internal module. Not part of the public API.
module Data.PackStream.Assoc (
  Assoc(..)
  ) where

import           Compat.Prelude

import           Data.Kind (Type)

-- | Newtype wrapper for associative (dictionary-like) PackStream encoding.
--
-- not defined for general Functor for performance reason.
-- (ie. you would want to write custom instances for each type using specialized mapM-like functions)
type Assoc :: Type -> Type
type role Assoc representational
newtype Assoc a
  = Assoc { unAssoc :: a }
  deriving stock (Show, Read, Eq, Ord)
  deriving newtype NFData