Content deleted Content added
m MOS:CODE |
Citation bot (talk | contribs) Alter: pages, issue, template type. Add: pages, issue, s2cid, doi, volume, series. Formatted dashes. | Use this bot. Report bugs. | Suggested by Abductive | #UCB_webform 552/3850 |
||
Line 18:
| first1= John C.
| publisher= IFIP Working Group 2.1 on Algol
| pages=
| url= https://www.cs.tufts.edu/~nr/cs257/archive/john-reynolds/procedural-data-structures.pdf
}}
Line 37:
| title= Foundations of Object-Oriented Languages (FOOL), REX School/Workshop
| ___location= Noordwijkerhout, The Netherlands
| publisher= Springer Berlin Heidelberg |pages=
| chapter= Object-Oriented Programming versus Abstract Data Types
|series= Lecture Notes in Computer Science
|volume= 489
|doi= 10.1007/BFb0019443
| chapter-url= https://link.springer.com/chapter/10.1007/BFb0019443
| isbn= 978-3-540-46450-1}}
Line 71 ⟶ 74:
| first3= Matthias
| isbn= 978-0897919791
| s2cid= 5815257
}}</ref> To avoid using a programming language problem in a paper about programming languages, Krishnamurthi et al. used an old geometry programming problem to explain their pattern-oriented solution. In conversations with Felleisen and Krishnamurthi after the ECOOP presentation, Wadler understood the PL-centric nature of the problem and he pointed out that Krishnamurthi's solution used a cast to circumvent Java's type system. The discussion continued on the types mailing list, where Corky Cartwright (Rice) and [[Kim Bruce]] (Williams) showed how type systems for OO languages might eliminate this cast. In response Wadler formulated his essay and stated the challenge, "whether a language can solve the expression problem is a salient indicator of its capacity for expression." The label "expression problem" puns on expression = "how much can your language express" and expression =
"the terms you are trying to represent are language expressions".
Line 102 ⟶ 106:
There are various solutions to the expression problem. Each solution varies in the amount of code a user must write to implement them, and the language features they require.
* [[Multiple dispatch]]<ref name="Chambers & Leavens, Multi-Methods">{{cite journal|last1=Chambers|first1=Craig|last2=Leavens|first2=Gary T.|title=Type Checking and Modules for Multi-Methods|journal=ACM Trans. Program. Lang. Syst.|date=November 1995|
* [[Ruby (programming language)#Open classes|Open classes]]<ref name="Clifton et. al., MultiJava Open Classes">{{cite journal|last1=Clifton|first1=Curtis|last2=Leavens|first2=Gary T.|last3=Chambers|first3=Craig|last4=Millstein|first4=Todd|title=MultiJava: Modular Open Classes and Symmetric Multiple Dispatch for Java|journal=Oopsla '00|date=2000|doi=10.1145/353171.353181 |s2cid=7879645 |url=http://people.csail.mit.edu/dnj/teaching/6898/papers/multijava.pdf}}</ref>
* [[Coproduct]]s of [[functor]]s<ref>{{cite
|author = Wouter Swierstra
|title = Data Types à La Carte
Line 116 ⟶ 120:
|doi = 10.1017/S0956796808006758
}}</ref>
* [[Type class]]es<ref name="Wehr & Thiemann, JavaGI Type Classes">{{cite journal|last1=Wehr|first1=Stefan|last2=Thiemann|first2=Peter|title=JavaGI: The Interaction of Type Classes with Interfaces and Inheritance|journal=ACM Trans. Program. Lang. Syst.|date=July 2011|issue=33|doi=10.1145/1985342.1985343 |s2cid=13174506 |url=http://www.stefanwehr.de/publications/WehrThiemann2011TOPLAS.html}}</ref>
* Tagless-final<ref name="Carette et al.,
Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languages">{{cite journal|last1=Carette|first1=Jacques|last2=Kiselyov|first2=Oleg|last3=Chung-chieh|first3=Shan|title=Finally Tagless, Partially Evaluated: Tagless Staged Interpreters for Simpler Typed Languages|journal=J. Funct. Program.|date=2009|volume=19 |issue=5 |pages=509–543 |doi=10.1017/S0956796809007205 |s2cid=6054319 |url=http://okmij.org/ftp/tagless-final/JFP.pdf}}</ref> / Object algebras<ref name="Oliveira & Cook, Object Algebras">{{cite journal|last1=Oliveira|first1=Bruno C. d. S.|last2=Cook|first2=William R.|title=Extensibility for the Masses: Practical Extensibility with Object Algebras|journal=Ecoop '12|date=2012|url=http://www.cs.utexas.edu/~wcook/Drafts/2012/ecoop2012.pdf}}</ref>
* Polymorphic Variants<ref name="Code Reuse Through Polymorphic Variants">{{cite journal|last1=Garrigue|first1=Jacques|title=Code Reuse Through Polymorphic Variants|citeseerx=10.1.1.128.7169|year=2000}}</ref>
|