Yes, this works as expected for me:

(defclass foosys (asdf/system:system)
  ()
  (:default-initargs :default-component-class 'foo))

(asdf/component:module-default-component-class (make-instance 'foosys)) => foo

-- 
Martin Simmons
LispWorks Ltd
http://www.lispworks.com/



>>>>> On Wed, 22 Dec 2021 08:46:02 -0600, Robert P Goldman said:
> 
> I don’t fully understand the issue. I followed up the reference you posted, 
> and the follow-on reference to Chris Riesbeck’s web page, and there I see the 
> following:  
> 
> 
> make-instance (in conjunction with initialize-instance) creates an instance 
> of a circle as follows:
> 
> make-instance creates an empty instance.  
> make-instance passes the instance and the other arguments to 
> initialize-instance.  
> initialize-instance first uses any explicit initargs that you gave to 
> make-instance.
> For slots still unitialized, it then uses any default initargs that have been 
> defined.
> Finally, for slots still unitialized, it uses any default initforms that have 
> been defined.
> 
> 
> So one difference is that default initargs take priority over initforms.
> 
> 
> ———-
> 
> This suggests that your default initargs (Apple tried to make that 
> “unitards”!) should, in fact, shadow the initforms.
> 
> This seems to be consistent with what is in the spec here 
> http://www.lispworks.com/documentation/HyperSpec/Body/07_a.htm  
> 
> I’ll have to look at the actual code (not at my desk rn) to see what’s going 
> on, but it does not seem to be an issue with default initargs vs. initforms  
> 
> If anyone else beats me to it, that would be great.  
> 
> 
> --  
> Robert P. Goldman  
> 
> On December 22, 2021 at 05:18:58, Attila Lendvai 
> (att...@lendvai.name(mailto:att...@lendvai.name)) wrote:
> 
> > dear list,
> >  
> > i wanted to set the default-component-class of our own system subclass 
> > using :default-initargs, but it's ignored because the slot has a :initform 
> > (as opposed to setting the default value using a :default-initargs entry).
> >  
> > in the current ASDF setup, i need to override the slot (or the accessor 
> > method), which involves messing with internal symbols.
> >  
> > if ASDF used :default-initargs then i could just override that using a 
> > :default-initargs entry on my own subclass (IIUC).
> >  
> > https://lisptips.com/post/11728375873/initform-and-default-initargs
> >  
> > i'm sending it for your consideration, it's not a pressing issue on my side.
> >  
> > - attila
> > PGP: 5D5F 45C7 DFCD 0A39
> >  
> 

Reply via email to