▁static ▁type ▁checking ▁would ▁reject ▁as ▁illegal . ▁For ▁example , ▁eval ▁functions , ▁which ▁execute ▁arbitrary ▁data ▁as ▁code , ▁become ▁possible . ▁An ▁eval ▁function ▁is ▁possible ▁with ▁static ▁typing , ▁but ▁requires ▁advanced ▁uses ▁of ▁algebraic ▁data ▁types . ▁Further , ▁dynamic ▁typing ▁better ▁accommod ates ▁trans itional ▁code ▁and ▁pro tot yp ing , ▁such ▁as ▁allowing ▁a ▁placeholder ▁data ▁structure ▁( mock ▁object ) ▁to ▁be ▁trans par ently ▁used ▁in ▁place ▁of ▁a ▁full ▁data ▁structure ▁( us ually ▁for ▁the ▁purposes ▁of ▁experiment ation ▁and ▁testing ). ▁ ▁Dynamic ▁typing ▁typically ▁allows ▁du ck ▁typing ▁( which ▁enables ▁easier ▁code ▁reuse ). ▁Many ▁languages ▁with ▁static ▁typing ▁also ▁feature ▁du ck ▁typing ▁or ▁other ▁mechan isms ▁like ▁generic ▁programming ▁that ▁also ▁enable ▁easier ▁code ▁reuse . ▁ ▁Dynamic ▁typing ▁typically ▁makes ▁met ap ro gram ming ▁easier ▁to ▁use . ▁For ▁example , ▁C ++ ▁templates ▁are ▁typically ▁more ▁cum bers ome ▁to ▁write ▁than ▁the ▁equivalent ▁Ruby ▁or ▁Python ▁code ▁since ▁C ++ ▁has ▁stronger ▁rules ▁regarding ▁type ▁definitions ▁( for ▁both ▁functions ▁and ▁variables ). ▁This ▁forces ▁a ▁developer ▁to ▁write ▁more ▁bo iler plate ▁code ▁for ▁a ▁template ▁than ▁a ▁Python ▁developer ▁would ▁need ▁to . ▁More ▁advanced ▁run - time ▁construct s ▁such ▁as ▁met ac lass es ▁and ▁intros pection ▁are ▁often ▁harder ▁to ▁use ▁in ▁stat ically ▁typed ▁languages . ▁In ▁some ▁languages , ▁such ▁features ▁may ▁also ▁be ▁used ▁e . g . ▁to ▁generate ▁new ▁types ▁and ▁behav