OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Why functional programming matters
The Computer Journal - Special issue on Lazy functional programming
Tcl and the Tk toolkit
Monads and composable continuations
Lisp and Symbolic Computation
A lambda-calculus for dynamic binding
Theoretical Computer Science - Special issue: theoretical aspects of coordination languages
Revised5 report on the algorithmic language scheme
ACM SIGPLAN Notices
A Theory of Objects
The Java Programming Language
Programming Perl
Smalltalk-80: The Language
Introduction to Functional Programming
Introduction to Functional Programming
Higher-Order and Symbolic Computation
Parsing expression grammars: a recognition-based syntactic foundation
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Programming Python
Applications = Components + GLoo
Electronic Notes in Theoretical Computer Science (ENTCS)
Classboxes: controlling visibility of class extensions
Computer Languages, Systems and Structures
Polyglot: an extensible compiler framework for Java
CC'03 Proceedings of the 12th international conference on Compiler construction
SC'05 Proceedings of the 4th international conference on Software Composition
GLoo: a framework for modeling and reasoning about component-oriented language abstractions
CBSE'06 Proceedings of the 9th international conference on Component-Based Software Engineering
Scheme with classes, mixins, and traits
APLAS'06 Proceedings of the 4th Asian conference on Programming Languages and Systems
Companion to the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Hi-index | 0.00 |
The design of programming languages is, in general, geared towards accumulation rather than composition of features. However, by adding an ever-increasing number of built-in abstractions, any programming language is eventually at risk to reach a critical mass at which it may become increasingly difficult for designers to maintain and for developers to use an evolving language appropriately. To tackle this language design paradox, we have developed GLOO, a small open-ended dynamic language, whose design philosophy aims at a unified approach in which program and language evolution result directly from the definition of extensible domain sub-languages. Surprisingly, these extensible domain sub-languages not only provide a framework to capture domain expertise, but also give rise to a powerful compositional model for language extension. To demonstrate the effectiveness of this approach, we develop the Language of Namespaces and Traits in this paper. We define this extensible domain sub-language as an aggregate of various forms of object-oriented language support. Using the Language of Namespaces and Traits as example, we show that GLOO's extension model plays a crucial role in achieving a flexible compositional approach for the design of readily-available and extensible programming abstractions.