Similar to our preceding Go example where we added a new method (PrintInfo) to our base type (Car), pure functional programming languages also add new functions over existing data types without having to recompile existing code and while retaining static type safety.
The
expression problem also known as the
extensibility problem addresses a software language's ability to add new methods and types to a program in a type safe manner. For details, see
Feature Oriented Software Development (
FOSD) Program Cubes where a base program (in a family of related programs called a
software product line) (
http://softwareproductlines.com/) is incrementally augmented with features to produce a complex program. ...