I mostly liked this article to show some of the basic features of CLOS, but was a little disappointed about the attitude toward the end. The attitude toward some of the more advanced features of CLOS like method combination reminds me of the attitude that some people have for functional programming. "Well, it's cool you can 'map' and 'reduce' a function across a list, but why not just use a for-loop?" I think most pe…
I wonder if anyone has a favorite example that uses method combinations, or auxiliary methods (:before, :after, :around), or something MOP related. Preferably one that is "in-the-wild" and not invented just to showcase the feature.
Postmodern[0] defines simple wrapper objects so that you can access databases rows as objects. The same goes for the Elephant persistent database[1]. Cells[2] define metaobjects for classes with dataflow dependencies where slots can be automatically updated in a reactive fashion.
:AROUND methods and the like are used quite often. In fact, the default way of defining a "constructor" function for your class is to specialize "initialize-instance" with an :after qualifier, so that you can fill slots that could not be initialized with the arguments to "make-instance" or the default initargs.
[0] http://marijnhaverbeke.nl/postmodern/