{-# LANGUAGE KindSignatures      #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StrictData          #-}
module Network.Tox.TypeName
  ( typeName
  ) where

import           Data.Kind     (Type)
import           Data.Typeable (Typeable)
import qualified Data.Typeable as Typeable


typeName :: Typeable (a :: Type) => proxy a -> String
typeName :: proxy a -> String
typeName (proxy a
_ :: proxy a) =
  TypeRep -> String
forall a. Show a => a -> String
show (TypeRep -> String) -> (a -> TypeRep) -> a -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> TypeRep
forall a. Typeable a => a -> TypeRep
Typeable.typeOf (a -> String) -> a -> String
forall a b. (a -> b) -> a -> b
$ (a
forall a. HasCallStack => a
undefined :: a)