💾 Archived View for soviet.circumlunar.space › zwatotem › snapshot › solution › history.gmi captured on 2024-09-29 at 01:44:02. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
Expression Problem has been an object of some academic study since at least (Reynolds, 1978). The formulation of the problem changed together with new concepts being added to popular programming languages. In (Cook, 1991) two complementary methods of defining abstractions are described as “Procedural Data Abstractions” (PDA) and “Abstract Data Types” (ADT). Krishnamurthi et al. (1998) were the first to acknowledge two perspectives on the problem as functional and object oriented. They also pointed out that visitor pattern was a way of emulating functional approach in object-oriented environment. This paper also introduces an example of Expression Problem with recursive data, which helps to identify unsoundness in potential solu-tions. It is also the first publicized text on the matter to describe it in terms of modern object-oriented programming languages, like Java. (Walder, 1998) was perhaps the first to use the name “Expression Problem” and present it on an example of expressions as they are understood by a (programming) language parser. Walder’s explanation for the name of the problem was that “Whether language can solve the Expression Problem is a salient indicator of its capacity for expression”. This formulation of Expression Problem was a provoker to further research from Rice University's Programming Languages Team (PLT). (Torgersen, 2004) introduced four new Expression Problem using generics.
(Tarr et al., 1999) discussed the problem wider than the Expression Problem: cross-cutting concerns in software development. They proposed a solution to be a decomposition of code with a composition rule according to a selected rule of organization.
(Zenger & Odersky, 2005) added a criterion of cross-unit composability to the definition of the problem and introduced two solutions based on Scala’s mix-in feature, which were extending existing solutions of object and func-tional decomposition to satisfy this new requirement.
Another line of research focused on the Expression Problem in a specific context of embedding programming languages in other languages, where a special subset of the Expression Problem occurs. The idea of embedding domain specific languages has been considered for a long time as well (Reyn-olds, 1972, 1998). It has been a centerpiece of the famous programming lec-ture and a book (“Structure and Interpretation of Computer Programs, (Sec-ond Edition),” 1997). A new approach to encoding languages, called “final tagless”, named after the title of the paper “Finally tagless, partially evaluat-ed: Tagless staged interpreters for simpler typed languages” by Carette et al., 2009 allowed to introduce new interpreters and extend the set of possible language terms independently. It also didn’t demand advanced language con-structs, unlike the initial approach. Oliveira & Cook (2012) presented a simi-lar approach realized in the context of an object-oriented language.