Homogeneous Meta-Programming Techniques with Case Study

There are two kinds of meta-programming: homogeneous and heterogeneous. Here, we focus on homogeneous meta-programming only.

[1]  Adam Megacz Multi-Stage Programs are Generalized Arrows , 2010, ArXiv.

[2]  Henrik Nilsson,et al.  Switched-On Yampa , 2008, PADL.

[3]  Paul Hudak,et al.  Causal commutative arrows and their optimization , 2009, ICFP.

[4]  JohnMaddock,et al.  C++ Type traits , 2001 .

[5]  Philip Wadler Monads for Functional Programming , 1995, Advanced Functional Programming.

[6]  Philip Wadler,et al.  The marriage of effects and monads , 1998, ICFP '98.

[7]  John C. Reynolds,et al.  Types, Abstraction and Parametric Polymorphism , 1983, IFIP Congress.

[8]  Yannis Smaragdakis,et al.  Implementing Layered Designs with Mixin Layers , 1998, ECOOP.

[9]  Todd L. Veldhuizen,et al.  Using C++ template metaprograms , 1996 .

[10]  Yannis Smaragdakis,et al.  Mixin layers: an object-oriented implementation technique for refinements and collaboration-based designs , 2002, TSEM.

[11]  Martin Erwig,et al.  Monadification of functional programs , 2004, Sci. Comput. Program..

[12]  William R. Cook,et al.  Mixin-based inheritance , 1990, OOPSLA/ECOOP '90.

[13]  John C. Mitchell,et al.  Type Systems for Programming Languages , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[14]  John Hughes,et al.  Generalising monads to arrows , 2000, Sci. Comput. Program..

[15]  Oege de Moor,et al.  The Fun of Programming , 2003 .

[16]  Paul Hudak,et al.  HPorter: Using Arrows to Compose Parallel Processes , 2007, PADL.

[17]  Krzysztof Czarnecki,et al.  DSL Implementation in MetaOCaml, Template Haskell, and C++ , 2003, Domain-Specific Program Generation.

[18]  Oscar Nierstrasz,et al.  Traits: A mechanism for fine-grained reuse , 2006, TOPL.

[19]  Vibha Sazawal,et al.  Directing JavaScript with arrows , 2009, DLS '09.

[20]  Calvin Lin,et al.  Using mixins to build flexible widgets , 2002, AOSD '02.

[21]  Raymond M. Smullyan,et al.  To Mock a Mockingbird , 1985 .

[22]  Jacques Carette,et al.  Multi-stage programming with functors and monads: eliminating abstraction overhead from generic code , 2005, GPCE'05.

[23]  Peter Kilpatrick,et al.  Mixin programming in Java with reflection and dynamic invocation , 2002, PPPJ/IRE.

[24]  David Abrahams,et al.  C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ In-Depth Series) , 2004 .

[25]  Ina Schaefer,et al.  Implementing software product lines using traits , 2010, SAC '10.

[26]  Eugenio Moggi,et al.  Notions of Computation and Monads , 1991, Inf. Comput..

[27]  Peter J. Ashenden,et al.  The Designer's Guide to VHDL , 1995 .

[28]  Hendrik Pieter Barendregt,et al.  Introduction to generalized type systems , 1991, Journal of Functional Programming.

[29]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[30]  Ross Paterson,et al.  Arrows and computation , 2009 .

[31]  Baowen Xu,et al.  A slice monad transformer and its applications in program slicing , 2005, 10th IEEE International Conference on Engineering of Complex Computer Systems (ICECCS'05).

[32]  Zoran Salcic VHDL and FPLDs in Digital Systems Design, Prototyping and Customization , 1998 .

[33]  Douglas Gregor,et al.  C++ Templates: The Complete Guide , 2002 .

[34]  Martin Odersky,et al.  Domain-Specific Program Generation , 2004, Lecture Notes in Computer Science.

[35]  Tim Sheard,et al.  Accomplishments and Research Challenges in Meta-programming , 2001, SAIG.

[36]  Peng Li,et al.  Arrows for secure information flow , 2010, Theor. Comput. Sci..

[37]  Todd L. Veldhuizen,et al.  Expression templates , 1996 .

[38]  Jan Bosch,et al.  Issues Concerning Variability in Software Product Lines , 2000, IW-SAPF.

[39]  Tarmo Uustalu,et al.  Comonadic Notions of Computation , 2008, CMCS.

[40]  Yannis Smaragdakis,et al.  Building Product-Lines with Mixin-Layers , 1999, ECOOP Workshops.

[41]  Tilman Schäfer,et al.  Supporting meta-types in a compiled, reflective programming language , 2002 .

[42]  Emir Pasalic,et al.  The role of type equality in meta-programming , 2004 .

[43]  Martin Odersky,et al.  Towards equal rights for higher-kinded types , 2007 .

[44]  Johan Jeuring,et al.  Polytypic Compact Printing and Parsing , 1999, ESOP.