<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On 25 Feb 2010, at 16:03, Juan Jose Garcia-Ripoll wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div class="gmail_quote">On Thu, Feb 25, 2010 at 3:42 PM, Pascal Costanza <span dir="ltr"><<a href="mailto:pc@p-cos.net">pc@p-cos.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div style="word-wrap:break-word"><div><div></div><div class="h5"><div><br></div></div></div><div>So in other words I should prefer ext:lambda-block over just lambda?</div></div></blockquote><div><br></div><div>Maybe, or maybe not. I do not know how you get the functions to have a name in other platforms. If you have a better solution that I could implement in ECL, I would like to know it.</div>
</div></blockquote></div><div><br></div><div>I have looked further into this issue. The closures associated with methods should actually not have names (or their names should not be used for debugging). What should be printed is the name of the generic function they are contained in. The reason is that methods may be freely moved from one generic function to the next. Consider the following example:</div><div><br></div><div><div>> (defmethod foo (a b) (/ (+ a b) 0))</div><div><br></div><div>#<STANDARD-METHOD FOO (#<The BUILT-IN-CLASS T> #<The BUILT-IN-CLASS T>)></div><div>> (foo 3 4)</div><div><br></div><div>#<a DIVISION-BY-ZERO></div><div><br></div><div>Available restarts:</div><div><br></div><div>1. (RESTART-TOPLEVEL) Go back to Top-Level REPL.</div><div><br></div><div>Broken at FOO. In: #<process SI:TOP-LEVEL 00000001005c0f60>.</div><div>>> :r1</div><div><br></div><div>> (defgeneric bar (x y))</div><div><br></div><div>#<STANDARD-GENERIC-FUNCTION BAR></div><div>> (let ((method (first (clos:generic-function-methods #'foo))))</div><div> (remove-method #'foo method)</div><div> (add-method #'bar method))</div><div><br></div><div>#<STANDARD-GENERIC-FUNCTION BAR></div><div>> (bar 3 4)</div><div><br></div><div>#<a DIVISION-BY-ZERO></div><div><br></div><div>Available restarts:</div><div><br></div><div>1. (RESTART-TOPLEVEL) Go back to Top-Level REPL.</div><div><br></div><div>Broken at FOO. In: #<process SI:TOP-LEVEL 00000001005c0f60>.</div><div>>> :backtrace</div><div><br></div><div>Backtrace:</div><div> > FOO</div><div> > si:bytecodes [Evaluation of: (bar 3 4)]</div><div> > si:bytecodes [Evaluation of: (si:top-level)]</div><div><br></div><div>You see FOO printed here, although BAR was actually called.</div><div><br></div><div>So I prefer not to change Closer to MOP in this regard.</div><div><br></div><div><br></div><div><br></div><div>Pascal</div></div><br><div>
<span class="Apple-style-span" style="font-size: 12px; "><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; 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-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: 0px; "><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; 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-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: 0px; "><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; 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-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: 0px; "><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; 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-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: 0px; "><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; 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-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: 0px; "><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; 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-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: 0px; "><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; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-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; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>-- </div><div>Pascal Costanza, <a href="mailto:pc@p-cos.net">mailto:pc@p-cos.net</a>, <a href="http://p-cos.net">http://p-cos.net</a></div><div>Vrije Universiteit Brussel</div><div>Software Languages Lab</div><div>Pleinlaan 2, B-1050 Brussel, Belgium</div><div><br></div></div></span></div></span></div></span></div></span></div></span></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"><br class="Apple-interchange-newline">
</div>
<br></body></html>