{-# LANGUAGE CPP       #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
#if __GLASGOW_HASKELL__ >= 706
{-# LANGUAGE PolyKinds #-}
#endif
module Data.Binary.Instances.Tagged where

import Data.Binary         (Binary, get, put)
import Data.Binary.Orphans ()

import qualified Data.Tagged as Tagged

instance Binary b => Binary (Tagged.Tagged s b) where
    put :: Tagged s b -> Put
put = b -> Put
forall t. Binary t => t -> Put
put (b -> Put) -> (Tagged s b -> b) -> Tagged s b -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tagged s b -> b
forall k (s :: k) b. Tagged s b -> b
Tagged.unTagged
    get :: Get (Tagged s b)
get = (b -> Tagged s b) -> Get b -> Get (Tagged s b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap b -> Tagged s b
forall k (s :: k) b. b -> Tagged s b
Tagged.Tagged Get b
forall t. Binary t => Get t
get