From the dawn of high-level programming languages, the pursuit of better abstraction is something that language designers have always strived for. As such, many ideas concerning code reuse emerged. The very first of them was functions. Functions allow you to chunk away a sequence of instructions within a named entity that can be called later many times, optionally accepting any arguments for each invocation. They reduce code complexity and amplify readability. However, functions can only get you so far. If you have a function, say avg, that calculates the average of a given list of integer values and later you have a use case where you need to calculate the average for a list of float values too, then the usual solution is to create a new function that can average float values from the list of floats. What if you wanted to accept a list of double values too? We probably...
![country flag](/images/countries/us.png)
![country flag](/images/countries/gb.png)
![country flag](/images/countries/india.png)
![country flag](/images/countries/germany.png)
![country flag](/images/countries/france.png)
![country flag](/images/countries/canada.png)
![country flag](/images/countries/russia.png)
![country flag](/images/countries/spain.png)
![country flag](/images/countries/brazil.png)
![country flag](/images/countries/australia.png)
![country flag](/images/countries/argentina.png)
![country flag](/images/countries/austria.png)
![country flag](/images/countries/belgium.png)
![country flag](https://cdn.packtpub.com/flag/004da5c4-583f-4e69-a0a8-0e999f350f90_128px-Flag_of_Bulgaria.png)
![country flag](/images/countries/chile.png)
![country flag](/images/countries/colombia.png)
![country flag](/images/countries/cyprus.png)
![country flag](/images/countries/czech.png)
![country flag](/images/countries/denmark.png)
![country flag](/images/countries/ecuador.png)
![country flag](/images/countries/egypt.png)
![country flag](/images/countries/estonia.png)
![country flag](/images/countries/finland.png)
![country flag](/images/countries/greece.png)
![country flag](/images/countries/hungary.png)
![country flag](/images/countries/indonesia.png)
![country flag](/images/countries/ireland.png)
![country flag](/images/countries/italy.png)
![country flag](/images/countries/japan.png)
![country flag](/images/countries/latvia.png)
![country flag](/images/countries/lithuania.png)
![country flag](/images/countries/lux.png)
![country flag](/images/countries/malaysia.png)
![country flag](/images/countries/malta.png)
![country flag](/images/countries/mexico.png)
![country flag](/images/countries/netherlands.png)
![country flag](/images/countries/newzealand.png)
![country flag](/images/countries/norway.png)
![country flag](/images/countries/philippines.png)
![country flag](/images/countries/poland.png)
![country flag](/images/countries/portugal.png)
![country flag](/images/countries/romania.png)
![country flag](/images/countries/singapore.png)
![country flag](/images/countries/slovakia.png)
![country flag](/images/countries/slovenia.png)
![country flag](/images/countries/southafrica.png)
![country flag](/images/countries/southkorea.png)
![country flag](/images/countries/sweden.png)
![country flag](/images/countries/switzerland.png)
![country flag](/images/countries/taiwan.png)
![country flag](/images/countries/thailand.png)
![country flag](/images/countries/turkey.png)
![country flag](/images/countries/ukraine.png)