[citation needed] Philip Wadler formulated the challenge and named it "The Expression Problem"[1] in response to a discussion with Rice University's Programming Languages Team (PLT).
Fifteen years later in 1990, William Cook[3] applied Reynold's idea in the context of Objects and Abstract Data Types, which had both grown extensively.
He also reviewed implementations in both styles, discussed extensibility in both directions, and also identified the importance of static typing.
Most importantly, he discussed situations in which there was more flexibility than Reynolds considered, including internalization and optimization of methods.
At ECOOP '98, Shriram Krishnamurthi et al.[4] presented a design pattern solution to the problem of simultaneously extending an expression-oriented programming language and its tool-set.
Others co-discovered variants of the expression problem around the same time as Rice University's PLT, in particular Thomas Kühne[8] in his dissertation, and Smaragdakis and Batory[9] in a parallel ECOOP 98 article.
Now imagine that we wish to extend this library, adding a new type is easy because we are working with an Object-oriented programming language.