Learning Type System