Why can't defstructs be redefined?
Vibhu Mohindra
vibhu.mohindra at gmail.com
Mon Jul 11 19:53:32 UTC 2022
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
More information about the armedbear-devel
mailing list