Here's another way to do it:

data ValType = FloatType | IntType | StringType
    deriving (Show,Eq)

instance Hashable ValType where
    hash FloatType = 0
    hash IntType = 1
    hash StringType = 2

data VarName = VarName ValType String
    deriving (Show,Eq)

instance Hashable VarName where
    hash (VarName t n) = hash (t, n)