Another admittedly not-so-good way to do this:
import Data.Typeable
myFunc :: (Typeable a, Num a, Show a) => a -> String
myFunc x
| typeOf x == typeOf (0:: Int) = "Its an Int: " ++ show x
| typeOf x == typeOf (0:: Float) = "Its a Float: " ++ show x
| typeOf x == typeOf (0:: Double) = "Its a Double: " ++ show x
, Num a, , . , - - , , myFunc 42 , , Integer, Num a.
, , .
* > myFunc (42:: Int)
" Int: 42"
* > myFunc (42:: Float)
" : 42,0"
* > myFunc (42:: Double)
" : 42,0"
* > myFunc 42
"*** : Main.hs: (11,1) - (14,66): myFunc