▁character , ▁an ▁integer , ▁or ▁a ▁floating - point ▁number , ▁because ▁it ▁makes ▁no ▁intr insic ▁distinction ▁between ▁any ▁of ▁the ▁possible ▁values ▁that ▁a ▁sequence ▁of ▁bits ▁might ▁mean . ▁Associ ating ▁a ▁sequence ▁of ▁bits ▁with ▁a ▁type ▁con ve ys ▁that ▁meaning ▁to ▁the ▁program m able ▁hardware ▁to ▁form ▁a ▁symbol ic ▁system ▁composed ▁of ▁that ▁hardware ▁and ▁some ▁program . ▁ ▁A ▁program ▁associ ates ▁each ▁value ▁with ▁at ▁least ▁one ▁specific ▁type , ▁but ▁it ▁also ▁can ▁occur ▁that ▁one ▁value ▁is ▁associated ▁with ▁many ▁sub types . ▁Other ▁entities , ▁such ▁as ▁objects , ▁modules , ▁communication ▁channels , ▁and ▁dependencies ▁can ▁become ▁associated ▁with ▁a ▁type . ▁Even ▁a ▁type ▁can ▁become ▁associated ▁with ▁a ▁type . ▁An ▁implementation ▁of ▁a ▁type ▁system ▁could ▁in ▁theory ▁associate ▁ident ifications ▁called ▁data ▁type ▁( a ▁type ▁of ▁a ▁value ), ▁class ▁( a ▁type ▁of ▁an ▁object ), ▁and ▁kind ▁( a ▁type ▁of ▁a ▁type , ▁or ▁met atype ). ▁These ▁are ▁the ▁abstra ctions ▁that ▁typing ▁can ▁go ▁through , ▁on ▁a ▁hierarchy ▁of ▁levels ▁contained ▁in ▁a ▁system . ▁ ▁When ▁a ▁programming ▁language ▁evol ves ▁a ▁more ▁elaborate ▁type ▁system , ▁it ▁g ains ▁a ▁more ▁fin ely ▁gra ined ▁rule ▁set ▁than ▁basic ▁type ▁checking , ▁but ▁this ▁comes ▁at ▁a ▁price ▁when ▁the ▁type ▁infer ences ▁( and ▁other ▁properties ) ▁become ▁und ec id able , ▁and ▁when ▁more ▁attention ▁must ▁be ▁paid ▁by ▁the ▁programmer ▁to