Usage:
> polyTypeOf id a1 -> a1
> freeTyVars (polyTypeOf id) ["a1"]
> substTyVar ("a1",polyTypeOf(undefined::Int)) (polyTypeOf id) Int -> Int
> polyTypeOf const a1 -> a2 -> a1
> freeTyVars (polyTypeOf const) ["a1","a2"]
> substManyTyVars [("a1",polyTypeOf(undefined::Int)),("a2",polyTypeOf(undefined::Bool))] (polyTypeOf const) Int -> Bool -> Int
- freeTyVars :: TypeRep -> [String]
- substTyVar :: (String, TypeRep) -> TypeRep -> TypeRep
- substTyVars :: [(String, TypeRep)] -> TypeRep -> TypeRep