Implementation of Hindley Milner in CSharp