typeinferr Function