chaning to have more efficient instantiation
Performance greately improved by this change.

Should have done it from the beginning

Before type scheme was

forall a. tau

So in every instantiation, genreated fresh kind k, which is very silly

Now, type shceme is

forall a^k. tau

So, k is freshily generated once for each type scheme