Am Mi., 9. Dez. 2020 um 09:10 Uhr schrieb Jean-Claude Beaudoin < jean.claude.beaudoin@gmail.com>:
I would love to see languages with better support for redefinition.
Like unison, or darklang. Unhappily, update-instance-for-redefined-class, while very cool, is *not enough*.
My point is that it is already too much.
"I don't want to silence a lively discussion, but" several people have made the point that they found CLOS's mechanisms to deal with class redefinition useful. I can add myself to the list: When I was writing a CLOS based database system, I used CHANGE-CLASS and the associated helper methods to support schema evaluation. It did not work perfectly for all cases, but it worked well enough and felt like the MOP API was made exactly for this kind of thing.
Given the discussion until now, Jean-Claude, what is it that you're trying to accomplish with this debate? Are you up for proving that the MOP is "wrong"? You have repeatedly indicated that this would be your opinion. If so, are you trying to create a new version of the MOP that would not include class redefinition hooks? Or are you up for creating a new Lisp or a new Lisp object system that is inspired by the MOP but somehow different?
I think the ship has sailed anyway. Common Lisp, CLOS and the MOP are what they are. I still think they're beautiful, but they are also a product of the era in which they were created. Time has not stood still, and 20 years have passed without CL having changed or adapted to any new developments in computing. Even though in many respects, Common Lisp has aged well, there are areas in which the language itself is in the way of adapting to the modern world. Multiple threads come to mind, as do cons cells and CLOS, too. What else is there? I'd be interested in reading opinions.
I like using CL when I know that I don't need scalability and when I know that I'll be the only developer of the program that I'm writing. Under these circumstances, I enjoy it very much because it caters for this setting.
-Hans