Some functional programming languages offer clever approaches to working with statically typed function definitions. The issue is that many functions we'd like to write are entirely generic with respect to data type. For example, most of our statistical functions are identical for integer
or floating-point
numbers, as long as division returns a value that is a subclass of numbers.Real
(for example, Decimal
, Fraction
, or float
). In order to make a single generic definition work for multiple data types, sophisticated type or pattern-matching rules are used by the compiler.
Instead of the (possibly) complex features of statically typed functional languages, Python changes the issue using dynamic selection of the final implementation of an operator based on the data types being used. This means that a compiler doesn't certify that our functions are expecting and producing the proper data types. We generally rely on unit testing for this.
In Python, we...