text-show-instances-0.1.0.1: src/Text/Show/Text/Data/UnorderedContainers.hs
{-# LANGUAGE CPP #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-|
Module: Text.Show.Text.Data.UnorderedContainers
Copyright: (C) 2014-2015 Ryan Scott
License: BSD-style (see the file LICENSE)
Maintainer: Ryan Scott
Stability: Experimental
Portability: GHC
Monomorphic 'Show' functions for 'HashMap's and 'HashSet's.
/Since: 0.1/
-}
module Text.Show.Text.Data.UnorderedContainers (showbHashMapPrec, showbHashSetPrec) where
import qualified Data.HashMap.Lazy as HM (toList)
import Data.HashMap.Lazy (HashMap)
import qualified Data.HashSet as HS (toList)
import Data.HashSet (HashSet)
import Prelude hiding (Show)
import Text.Show.Text (Show(showbPrec), Show1(showbPrec1), Builder)
import Text.Show.Text.Utils (showbUnaryList)
#include "inline.h"
-- | Convert a 'HashMap' to a 'Builder' with the given precedence.
--
-- /Since: 0.1/
showbHashMapPrec :: (Show k, Show v) => Int -> HashMap k v -> Builder
showbHashMapPrec p = showbUnaryList p . HM.toList
{-# INLINE showbHashMapPrec #-}
-- | Convert a 'HashSet' to a 'Builder' with the given precedence.
--
-- /Since: 0.1/
showbHashSetPrec :: Show a => Int -> HashSet a -> Builder
showbHashSetPrec p = showbUnaryList p . HS.toList
{-# INLINE showbHashSetPrec #-}
instance (Show k, Show v) => Show (HashMap k v) where
showbPrec = showbHashMapPrec
INLINE_INST_FUN(showbPrec)
instance Show a => Show (HashSet a) where
showbPrec = showbHashSetPrec
INLINE_INST_FUN(showbPrec)
instance Show k => Show1 (HashMap k) where
showbPrec1 = showbHashMapPrec
INLINE_INST_FUN(showbPrec1)
instance Show1 HashSet where
showbPrec1 = showbHashSetPrec
INLINE_INST_FUN(showbPrec1)