Hindley Milner Type System, W inference algorithm