Object-oriented programming with flavors
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Multi-stage programming with explicit annotations
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Featherweight Java: a minimal core calculus for Java and GJ
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Art of the Metaobject Protocol
The Art of the Metaobject Protocol
Template meta-programming for Haskell
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Some features of the SIMULA 67 language
Proceedings of the second conference on Applications of simulations
Traits: A mechanism for fine-grained reuse
ACM Transactions on Programming Languages and Systems (TOPLAS)
Reflective program generation with patterns
Proceedings of the 5th international conference on Generative programming and component engineering
FeatherTrait: A modest extension of Featherweight Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Expressive and safe static reflection with MorphJ
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Featherweight Jigsaw: A Minimal Core Calculus for Modular Composition of Classes
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Implementing software product lines using traits
Proceedings of the 2010 ACM Symposium on Applied Computing
Mint: Java multi-stage programming using weak separability
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Incremental type-checking for type-reflective metaprograms
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Morphing: Structurally shaping a class by reflecting on others
ACM Transactions on Programming Languages and Systems (TOPLAS)
Statically safe program generation with SafeGen
Science of Computer Programming
Chai: traits for Java-like languages
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
A type system for reflective program generators
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Compile-time reflection and metaprogramming for Java
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Hi-index | 0.00 |
There have been exciting developments with respect to compile-time reflection for C# and Java. Fähndrich et al. [2006] introduced what we call pattern-based reflection as a high-level notation for inspecting members of old classes and generating members of a new class. Huang and Smaragdakis [2008, 2011] further increased the expressiveness of pattern-based reflection and strengthened its type safety guarantees. However, these proposals took place in settings with just classes and/or mixins, which limit the ways that generated declarations can be composed (just linearly). In this paper we investigate the combination of pattern-based reflection with traits, which offer more expressive forms of composition. Further, we provide language features for manipulating sets of member declarations: giving them names, manipulating their domains using set operations, and passing them as arguments to traits. To demonstrate the expressiveness of the proposed language design, we implement a library for object-relational mapping. We also formalize the language design, defining the syntax and semantics for a language named PTFJ (for Pattern-based Traits in Featherweight Java)