▁imply ▁a ▁type ▁of ▁floating - point , ▁while ▁ ▁might ▁imply ▁a ▁list ▁of ▁integers — typ ically ▁an ▁array . ▁ ▁Type ▁inference ▁is ▁in ▁general ▁possible , ▁if ▁it ▁is ▁comput able ▁in ▁the ▁type ▁system ▁in ▁question . ▁Moreover , ▁even ▁if ▁inference ▁is ▁not ▁comput able ▁in ▁general ▁for ▁a ▁given ▁type ▁system , ▁inference ▁is ▁often ▁possible ▁for ▁a ▁large ▁subset ▁of ▁real - world ▁programs . ▁H askell ' s ▁type ▁system , ▁a ▁version ▁of ▁H ind ley – Mil ner , ▁is ▁a ▁restriction ▁of ▁System ▁F ω ▁to ▁so - called ▁rank - 1 ▁polym orph ic ▁types , ▁in ▁which ▁type ▁inference ▁is ▁comput able . ▁Most ▁H askell ▁comp ilers ▁allow ▁arbitrary - rank ▁polym orphism ▁as ▁an ▁extension , ▁but ▁this ▁makes ▁type ▁inference ▁not ▁comput able . ▁( Type ▁checking ▁is ▁decid able , ▁however , ▁and ▁rank - 1 ▁programs ▁still ▁have ▁type ▁inference ; ▁higher ▁rank ▁polym orph ic ▁programs ▁are ▁rejected ▁unless ▁given ▁explicit ▁type ▁annotations .) ▁ ▁Dec ision ▁problems ▁ ▁A ▁type ▁system ▁that ▁assign s ▁types ▁to ▁terms ▁in ▁type ▁environments ▁using ▁type ▁rules ▁is ▁naturally ▁associated ▁with ▁the ▁decision ▁problems ▁of ▁type ▁checking , ▁typ ability , ▁and ▁type ▁inhab itation . ▁ ▁Type ▁checking ▁▁ ▁The ▁decision ▁problem ▁of ▁type ▁checking ▁( ab bre vi ated ▁by ▁) ▁is : ▁ ▁Given ▁a ▁type ▁environment ▁, ▁a ▁term ▁, ▁and ▁a ▁type ▁, ▁decide ▁whether ▁the ▁term ▁ ▁can ▁be ▁assigned