<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Gustavo,<span class="Apple-tab-span" style="white-space:pre"></span><div><br></div><div>I just updated metatilities to 0.6.17 with the fix for this problem.<span class="Apple-tab-span" style="white-space:pre"></span></div><div><br></div><div>Sorry it took so long and please do keep sending me problem reports and suggestions.<span class="Apple-tab-span" style="white-space:pre"></span></div><div><br></div><div>thanks,</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre"> </span><br><div><div>On Nov 25, 2008, at 8:53 PM, Gustavo wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Oh, a long time, I see. :)<br><br>I use your stuff a lot, so it is likelly that I find bugs in it.<br><br><div class="gmail_quote">2008/11/25 Gary King <span dir="ltr"><<a href="mailto:gwking@metabang.com">gwking@metabang.com</a>></span><br> <blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div style="">Hi Gustavo<div><br></div><div>Thanks for the detailed report. I haven't looked at (or even used!) this code for a _long_ time so it wouldn't surprise me if its broken. I'll see what I can do over the Thanksgiving break.</div> <div><br></div><div>regards,</div><div><div><div></div><div class="Wj3C7c"><br><div><div>On Nov 25, 2008, at 7:51 PM, Gustavo wrote:</div><br><blockquote type="cite">The compiler macros for functions disjoin and conjoin are broken. For debugging purposes, I copied the code to a macro to see what was happening.<br> <br><span style="font-family: courier new,monospace;">cl-user> (in-package :metatilities)</span><br style="font-family: courier new,monospace;"> <span style="font-family: courier new,monospace;">#<package "METABANG.UTILITIES"></span><br style="font-family: courier new,monospace;"> <span style="font-family: courier new,monospace;">utilities> (defmacro disjoin* (&whole form &rest fns)</span><br style="font-family: courier new,monospace;"> <span style="font-family: courier new,monospace;"> (cond ((every #'(lambda (x) (or (symbolp x) (function-expression-p x))) fns)</span><br style="font-family: courier new,monospace;"> <span style="font-family: courier new,monospace;"> (with-unique-names (args)</span><br style="font-family: courier new,monospace;"> <span style="font-family: courier new,monospace;"> `#'(lambda (,args)</span><br style="font-family: courier new,monospace;"> <span style="font-family: courier new,monospace;"> (or ,@(mapcar #'(lambda (x) </span><br style="font-family: courier new,monospace;"> <span style="font-family: courier new,monospace;"> `(apply ,(extract-head-form x) </span><br style="font-family: courier new,monospace;"> <span style="font-family: courier new,monospace;"> ,args)) </span><br style="font-family: courier new,monospace;"> <span style="font-family: courier new,monospace;"> fns)))))</span><br style="font-family: courier new,monospace;"> <span style="font-family: courier new,monospace;"> (t form)))</span><br style="font-family: courier new,monospace;"> <span style="font-family: courier new,monospace;">disjoin*</span><br style="font-family: courier new,monospace;"> <span style="font-family: courier new,monospace;">utilities> (macroexpand-1 '(disjoin* #'macro-char-p #'whitespace-p))</span><br style="font-family: courier new,monospace;"> <span style="font-family: courier new,monospace;">#'(lambda (#:|args/1399|)</span><br style="font-family: courier new,monospace;"> <span style="font-family: courier new,monospace;"> (or (apply macro-char-p #:|args/1399|) (apply whitespace-p #:|args/1399|)))</span><br style="font-family: courier new,monospace;"> <span style="font-family: courier new,monospace;">t</span><br> <br>I realized this bug trying to compile a function - sbcl complained about the variables macro-char-p and whitespace-p not to be defined. That makes me wonder: what is "extract-head-form" doing? It should be usefull only if you did something like:<br> <br><font face="courier new,monospace">(define-compiler-macro disjoin (fn &rest fns)<br> ...<br> `(,(extract-head-form x) ,@args)<br> ...<br>)<br></font><br>I.e., eliminating the funcalls (I saw that somewhere on <a href="http://cliki.net" target="_blank">cliki.net</a> some time ago).And, by the way, I guess that, the way the function disjoin is being defined, I guess there is no way to do this (the argument list is only known in execution time).<br> </blockquote></div><br></div></div><font color="#888888"><div> <span style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><div style=""> <span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><span style="border-collapse: separate; border-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><div> --</div><div>Gary Warren King, <a href="http://metabang.com" target="_blank">metabang.com</a> </div><div>Cell: (413) 559 8738</div><div>Fax: (206) 338-4052</div></span><div>gwkkwg on Skype * garethsan on AIM</div><div><br> </div><div><br></div></span><br></span></div></span> </div><br></font></div></div></blockquote></div><br></blockquote></div><br><div> <span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div>--</div><div>Gary Warren King, metabang.com </div><div>Cell: (413) 559 8738</div><div>Fax: (206) 338-4052</div></span><div>gwkkwg on Skype * garethsan on AIM</div><div><br class="khtml-block-placeholder"></div><div><br class="khtml-block-placeholder"></div></span><br class="Apple-interchange-newline"></span></div></span> </div><br></div></body></html>