<div dir="ltr">Here&#39;s another way to do it:<div><br></div><div><div>data ValType = FloatType | IntType | StringType</div><div>    deriving (Show,Eq)</div><div><br></div><div>instance Hashable ValType where</div><div>    hash FloatType = 0</div>

<div>    hash IntType = 1</div><div>    hash StringType = 2</div></div><div><br></div><div><div>data VarName = VarName ValType String</div><div>    deriving (Show,Eq)</div><div><br></div><div>instance Hashable VarName where</div>

<div>    hash (VarName t n) = hash (t, n)</div></div><div><br></div></div>