<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8">
</head>
<body>
<div style="font-family:sans-serif"><div style="white-space:normal">
<p dir="auto">On 22 Jun 2018, at 23:55, Stas Boukarev wrote:</p>

</div>
<div style="white-space:normal"></div>
<blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px"><div id="928BEEBC-B2D5-4FC6-A0BC-FE5B03F9C2E0"><div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Fri, Jun 22, 2018 at 5:13 PM Robert Goldman <<a href="mailto:rpgoldman@sift.info">rpgoldman@sift.info</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u>




<div>
<div style="font-family:sans-serif"><div style="white-space:normal">
<p dir="auto">I have a library that provides <code style="background-color:#f7f7f7;border-radius:3px;margin:0;padding:0 0.4em" bgcolor="#F7F7F7">DEF-UNIMPLEMENTED</code> as a macro for defining stub functions.  When you compile a file with unimplemented functions, you get a warning of the type <code style="background-color:#f7f7f7;border-radius:3px;margin:0;padding:0 0.4em" bgcolor="#F7F7F7">FOO:UNIMPLEMENTED-STUB</code> in my library <code style="background-color:#f7f7f7;border-radius:3px;margin:0;padding:0 0.4em" bgcolor="#F7F7F7">FOO</code>.</p>

<p dir="auto">I'd like to put in an asdf system definition a file spec something like this:</p>

<pre style="background-color:#f7f7f7;border-radius:5px 5px 5px 5px;margin-left:15px;margin-right:15px;max-width:90vw;overflow-x:auto;padding:5px" bgcolor="#F7F7F7"><code style="background-color:#f7f7f7;border-radius:3px;margin:0;padding:0" bgcolor="#F7F7F7">(:file "file-with-stubs" 
  :method (:around (o c) 
            (handler-bind ((foo:unimplemented-stub
                              #'(lambda (c) 
                                  (print c) 
                                  (muffle-warning c))
                (call-next-method)))
</code></pre>

<p dir="auto">but, of course, the package <code style="background-color:#f7f7f7;border-radius:3px;margin:0;padding:0 0.4em" bgcolor="#F7F7F7">foo</code> doesn't exist when this is read (although I could put <code style="background-color:#f7f7f7;border-radius:3px;margin:0;padding:0 0.4em" bgcolor="#F7F7F7">(asdf:load-system "foo")</code> upstream of the enclosing defsystem).</p>

<p dir="auto">This isn't a case that's nicely consistent with Faré's hack for translating strings or keyword symbols, nor does it seem easy to use <code style="background-color:#f7f7f7;border-radius:3px;margin:0;padding:0 0.4em" bgcolor="#F7F7F7">find-symbol</code> for this purpose.</p></div></div></div></blockquote><div>You could still use FIND-SYMBOL:</div><div>(handler-bind ((error (lambda (c) (when (typep c (find-symbol x :foo)))))) (a))</div></div></div></div></blockquote>
<div style="white-space:normal">
<blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px">
</blockquote></div>
<div style="white-space:normal">

<p dir="auto">That's a good point, and effectively what I ended up doing.  But it's certainly not pleasing, because we end up doing our own type dispatch, on top of that which is built into CL with <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">handler-bind</code>.  Still, this might be the best I can do.</p>

<p dir="auto">thanks,<br>
r</p>
</div>
</div>
</body>
</html>