<br><br><div class="gmail_quote">On Wed, Sep 15, 2010 at 15:29, Matthias Felleisen <span dir="ltr">&lt;<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<br>
<br>
Would this help you:<br>
<br>
#lang racket<br>
<br>
(define a%<br>
  (class object%<br>
    (init-field this.x)<br>
    (define/public (foo x)<br>
      (set! this.x x))<br>
    (define/public (bar)<br>
      this.x)<br>
    (super-new)))<br>
<br>
(new a% [this.x 10])<br>
<br>
(define (generic-methods class%)<br>
  (map (lambda (name) (list name (make-generic class% name)))<br>
       (interface-&gt;method-names (class-&gt;interface class%))))<br>
<br>
(generic-methods a%)<br></blockquote><div><br>If I could pass the latter result to a macro that binds the names with the function automatically, yes,<br>but this seems to be exactly my initial problem, I think.<br><br><br>

</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div><div></div><div class="h5"><br>
<br>
<br>
On Sep 15, 2010, at 9:10 AM, Laurent wrote:<br>
<br>
&gt;<br>
&gt;<br>
&gt; On Wed, Sep 15, 2010 at 14:57, Matthias Felleisen &lt;<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>&gt; wrote:<br>
&gt;<br>
&gt; Can we start from something simpler?<br>
&gt;<br>
&gt; The name of your macro suggests that you want something like this:<br>
&gt;<br>
&gt; (define one-and-only-one-instance<br>
&gt;  (new (class my-super% ...)))<br>
&gt;<br>
&gt; This creates a class and creates a single instance. Because class is nested<br>
&gt; in the call to new, there is no way to get another instance.<br>
&gt;<br>
&gt; Would this be what you want?<br>
&gt;<br>
&gt; Okay, let me explain what I want to do (the name is not really set in stone yet).<br>
&gt;<br>
&gt; There is a class a% defined somewhere, and an instance parameter<br>
&gt; current-a%-object of class a%.<br>
&gt; Suppose a% has methods foo and bar.<br>
&gt;<br>
&gt; Then I call:<br>
&gt; (class-&gt;singleton a% current-a%-object)<br>
&gt;<br>
&gt; This is supposed to define the forms (foo ....) and (bar ....) so that they act like<br>
&gt; (send (current-a%-object) foo ....), etc.<br>
&gt;<br>
&gt; I want to build these definitions automatically from the methods of the class.<br>
&gt;<br>
&gt; Anyway, beside the intended goal, I&#39;d still like to know how solve the macro issue.<br>
&gt;<br>
<br>
</div></div></blockquote></div><br>