<div dir="ltr">Michael Wilber kindly sent me the link:<br><br><div>  <a href="http://lists.racket-lang.org/users/archive/2012-April/051485.html">http://lists.racket-lang.org/users/archive/2012-April/051485.html</a><br><br>
and I think that this is not really a good argument for changing the default behavior. A keyword argument that says &quot;create a new eventspace&quot; seems okay, but the docs should explain that this is multi-threading, and if you were to invoke methods of the plot frame without first going to the new eventspace (via queue-callback or something like that), then you&#39;ll probably get bad behavior.</div>
<div><br>Robby<br><br>On Mon, Mar 11, 2013 at 1:55 PM, Eli Barzilay &lt;<a href="mailto:eli@barzilay.org">eli@barzilay.org</a>&gt; wrote:<br>&gt;<br>&gt; A few minutes ago, Robby Findler wrote:<br>&gt; &gt; There is a tension here, but I actually think Racket&#39;s default<br>
&gt; &gt; strategy is the best one (Matthew and I have discussed this a fair<br>&gt; &gt; amount way back when we were first getting GUI stuff going in<br>&gt; &gt; Racket; Java&#39;s strategy is different and leads to race-conditions<br>
&gt; &gt; easily, for example.).<br>&gt;<br>&gt; In this case, things are kind of obvious if you know about eventspaces<br>&gt; and about the per-plot eventspace feature -- but since this is a quirk<br>&gt; that only plot is doing, most people don&#39;t expect it and get<br>
&gt; surprised.<br>&gt;<br>&gt;<br>&gt; &gt; So if plot&#39;s function were just something like:<br>&gt; &gt;<br>&gt; &gt;   (define (plot-frmae the-args)<br>&gt; &gt;     (define f (new frame% ...))<br>&gt; &gt;     ..put stuff in frame..<br>
&gt; &gt;     (send f show #t))<br>&gt; &gt;<br>&gt; &gt; Then just hitting run in DrRacket would show you the multiple plots in<br>&gt; &gt; separate frames fine. At the command-line if you script was<br>&gt; &gt;<br>&gt; &gt; #lang racket<br>
&gt; &gt; (require plot)<br>&gt; &gt; (plot-frame ...)<br>&gt; &gt; (plot-frame ...)<br>&gt; &gt; (plot-frame ...)<br>&gt; &gt;<br>&gt; &gt; then that would also work fine (not exiting until you closed all the<br>&gt; &gt; windows).<br>
&gt;<br>&gt; +17 if it can work like this.  Otherwise, if there&#39;s a reason it<br>&gt; can&#39;t, then I think that the new-namespace could be available as a<br>&gt; keyword or parameter thing.  But the default should be the<br>
&gt; no-surprises version.<br>&gt;<br>&gt;<br>&gt; &gt; I can&#39;t recall anymore the use-case that let Neil to what he&#39;s done<br>&gt; &gt; here, so we probably should revisit that.<br>&gt;<br>&gt; --<br>&gt;           ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:<br>
&gt;                     <a href="http://barzilay.org/">http://barzilay.org/</a>                   Maze is Life!</div></div>