instantiate :: (Instantiate t) => [Var] -> [Type] -> t -> t
instantiate vs ts t = inst tymap t
                      where
                        tymap = Map.fromList (zip vs ts)                         
instantiate :: (Instantiate t) => [Var] -> [Type] -> t -> t
instantiate vs ts t = inst tymap t
                      where
                        tymap = Map.fromList (zip vs ts)                         
instantiate vs ts t = inst tymap t
                      where
                        tymap = Map.fromList (zip vs ts)                         