<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hi,<div class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 27 Dec 2017, at 12:50, Didier Verna <<a href="mailto:didier@lrde.epita.fr" class="">didier@lrde.epita.fr</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><br class="">  Hello,<br class=""><br class="">there is something annoying with<br class="">ensure-generic-function-using-class. The MOP specifies that if the<br class="">:generic-function-class option is not provided, it defaults to<br class="">standard-generic-function. While this makes perfect sense when the<br class="">generic function doesn't already exist, it seems to also apply when it<br class="">does.<br class=""><br class="">As a result, if you want to call ensure-generic-function on an existing<br class="">generic function using a different meta-class, for instance like this:<br class=""><br class="">(ensure-generic-function gf-name :generic-function-class (class-of gf))<br class=""><br class=""><br class="">This is a bit annoying, and I don't understand the rationale behind<br class="">this, if there's one. Why not defaulting to the existing generic<br class="">function's meta-class?<br class=""></div></div></blockquote></div><div class=""><br class=""></div><div class="">ensure-generic-function is the functional version of the defgeneric macro, and is supposed to behave the same way. If you don’t pass the :generic-function-class option to the defgeneric macro, it will also default to standard-generic-function, no matter what the previous definition of the generic function was.</div><div class=""><br class=""></div><div class="">If you want to change only one or a few aspects of a generic function (or metaobjects in general), you are supposed to call reinitialize-instance, which leaves all properties for which no keywords are passed unchanged.</div><div class=""><br class=""></div><div class="">Pascal</div><div class=""><br class=""></div><div class="">
<span style="font-family: Menlo-Regular; font-size: 11px;" class="">--</span><br style="font-family: Menlo-Regular; font-size: 11px;" class=""><span style="font-family: Menlo-Regular; font-size: 11px;" class="">Pascal Costanza</span><br style="font-family: Menlo-Regular; font-size: 11px;" class=""><br class="">

</div>

<br class=""></div></body></html>