Re: Why can't defstructs be redefined?
Vibhu Mohindra <[email protected]> Mon, 11 Jul 2022 21:53:32 +0200
| Newsgroups | gmane.editors.j.devel |
|---|---|
| Message-ID | <[email protected]> |
On 11/07/2022 19:41, Alan Ruttenberg wrote: > Anyone know this area of the compiler? It's very frustrating during > development. Interesting. The rationale is performance apparently. CLTL2: 19.2. How to Use Defstruct https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node170.html whose last four paragraphs explain the reason. It concludes with: "The defstruct feature is intended to provide ``the most efficient'' structure class. CLOS classes defined by defclass allow much more flexible structures to be defined and redefined." ---- If you want flexibility, but also don't want to use classes instead of structs everywhere, one solution may be to define your own defstruct macro in some package that produces a class and functions/methods. Import and use that defstruct during development, but switch over to the real one when development ends (assuming you want its performance). > Seems we ought to, at least, be able to blow away all > traces of the defstruct, ignoring existing structures and redefine it. CLTL2 above agrees in its last para, "Programming environments are allowed and encouraged to permit defstruct redefinition, [...]" so it sounds like you'll have made ABCL better once your structure-definition approach succeeds. Others on this list will know more about this area and the errors you're seeing. Vibhu