module Control.Distributed.Process.Internal.TypeRep () where
import Control.Applicative ((<$>), (<*>))
import Data.Binary (Binary(get, put))
import Data.Typeable.Internal (TypeRep(..), TyCon(..))
import GHC.Fingerprint.Type (Fingerprint(..))
instance Binary Fingerprint where
put (Fingerprint hi lo) = put hi >> put lo
get = Fingerprint <$> get <*> get
instance Binary TypeRep where
put (TypeRep fp tyCon ts) = put fp >> put tyCon >> put ts
get = TypeRep <$> get <*> get <*> get
instance Binary TyCon where
put (TyCon hash package modul name) = put hash >> put package >> put modul >> put name
get = TyCon <$> get <*> get <*> get <*> get