Open methods are an alternative to traditional Object-Oriented Programming. In OOP polymorphism is typically implemented via virtual member functions. This makes it difficult to add new behavior to existing hierarchies of classes - the so called Expression problem. This leads to designs that are either flawed (God classes) or clumsy (the Visitor pattern). Open methods are virtual functions defined outside of classes. This solves the Expression problem and more. Open methods can be implemented in D as a library. By using a combination of compile- and run-time techniques, it is possible to deliver an elegant syntax and a performance similar to native virtual functions.
Jean-Louis Leroy is the author of the openmethods module. He got his first taste of programming from a HP-25 calculator. His first real programming language was Forth, where CTFE is pervasive. Later he programmed (a little) in Lisp and Smalltalk, and (a lot) in C, C++, and Perl. He now works for Bloomberg LP in New York. His interests include object-relational mapping, open multi-methods, DSLs, and language extensions in general.