Three Complementary Approaches to Bidirectional Programming.-Generic Programming with Adjunctions.-Typed Tagless Final Interpreters.-The C++0x "Concepts" Effort.-Generic Programming with Dependent Types. Generic Programming with Adjunctions.-Typed Tagless Final Interpreters.-The C++0x "Concepts" Effort.-Generic Programming with Dependent Types.