1
1
mirror of https://github.com/github/semantic.git synced 2024-12-29 01:42:43 +03:00

Add a function to produce the name of a type.

This commit is contained in:
Rob Rix 2016-03-11 11:06:18 -05:00
parent 8cfcd8b7bc
commit 132acddaeb

View File

@ -2,6 +2,7 @@ module Data.Adjoined.Spec where
import Data.Adjoined
import Data.Coalescent
import Data.Typeable
import Test.Hspec
import Test.Hspec.QuickCheck
import Test.QuickCheck
@ -51,3 +52,14 @@ instance Arbitrary a => Arbitrary (Coalesced a) where
instance Monoid a => Coalescent (Coalesced a) where
coalesce a b = Just (Coalesced (runCoalesced a `mappend` runCoalesced b))
-- | Returns a string with the name of a type.
-- |
-- | Use with `asTypeOf` or `asGeneratedTypeOf` to show type names for parameters without fighting type variable scoping:
-- |
-- | showTypeOf (`asTypeOf` someTypeParametricValue)
showTypeOf :: Typeable a => (a -> a) -> String
showTypeOf f = show (typeRep (proxyOf f))
where proxyOf :: (a -> a) -> Proxy a
proxyOf _ = Proxy