ity ). ▁For ▁further ▁discussion ▁and ▁comparison ▁of ▁generic ▁programming ▁parad ig ms , ▁see . ▁ ▁Program ming ▁language ▁support ▁for ▁generic ity ▁Gener icity ▁facilities ▁have ▁existed ▁in ▁high - level ▁languages ▁since ▁at ▁least ▁the ▁ 1 9 7 0 s ▁in ▁languages ▁such ▁as ▁ML , ▁CL U ▁and ▁Ada , ▁and ▁were ▁subsequently ▁adopted ▁by ▁many ▁object - based ▁and ▁object - orient ed ▁languages , ▁including ▁B ET A , ▁C ++, ▁D , ▁E iff el , ▁Java , ▁and ▁DE C ' s ▁now ▁def unct ▁Tre ll is - O w l ▁language . ▁ ▁Gener icity ▁is ▁implemented ▁and ▁supported ▁differently ▁in ▁various ▁programming ▁languages ; ▁the ▁term ▁" generic " ▁has ▁also ▁been ▁used ▁differently ▁in ▁various ▁programming ▁context s . ▁For ▁example , ▁in ▁For th ▁the ▁compiler ▁can ▁execute ▁code ▁while ▁compiling ▁and ▁one ▁can ▁create ▁new ▁compiler ▁keywords ▁and ▁new ▁implementations ▁for ▁those ▁words ▁on ▁the ▁fly . ▁It ▁has ▁few ▁words ▁that ▁expose ▁the ▁compiler ▁behaviour ▁and ▁therefore ▁naturally ▁offers ▁generic ity ▁capac ities ▁that , ▁however , ▁are ▁not ▁referred ▁to ▁as ▁such ▁in ▁most ▁For th ▁texts . ▁Similarly , ▁dynamically ▁typed ▁languages , ▁especially ▁interpreted ▁ones , ▁usually ▁offer ▁generic ity ▁by ▁default ▁as ▁both ▁passing ▁values ▁to ▁functions ▁and ▁value ▁assignment ▁are ▁type - ind ifferent ▁and ▁such ▁behavior ▁is ▁often ▁util ized ▁for ▁abstra ction ▁or ▁code ▁t ers eness , ▁however ▁this ▁is ▁not ▁typically ▁l abeled ▁generic ity ▁as ▁it '