Let&#39;s not piggy-back too much on this one change.  First of all, I&#39;m proposing a very simple change, albeit with potentially complex consequences; you&#39;ve got a somewhat more complex design change in mind, but entirely backwards compatible.  Second, you detect definitions by using &quot;define&quot; as a keyword?  No, thank you, sir.  Let me know when you have a design that allows arbitrary definitions.  Personally I think this concept will work better as a new macro than an add-on for cond, because you&#39;re turning the already-overloaded test position, which can be an expression or a cond-specific keyword, into a triple-overload including definition special form names.<br>

<br clear="all">Carl Eastlund<br>
<br><div class="gmail_quote">On Tue, Oct 2, 2012 at 10:11 AM, Jay McCarthy <span dir="ltr">&lt;<a href="mailto:jay.mccarthy@gmail.com" target="_blank">jay.mccarthy@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

In addition to this, I want internal definitions in conds:<br>
<br>
(cond<br>
 [test1 body1]<br>
 (define var ...)<br>
 [(test2 var) body2]<br>
 [(test3 var) body3])<br>
<br>
I have a macro that does these things:<br>
<br>
<a href="https://github.com/jeapostrophe/exp/blob/master/condd.rkt" target="_blank">https://github.com/jeapostrophe/exp/blob/master/condd.rkt</a><br>
<br>
It&#39;s pretty cute<br>
<br>
Jay<br>
<div class="HOEnZb"><div class="h5"><br>
On Tue, Oct 2, 2012 at 7:58 AM, Carl Eastlund &lt;<a href="mailto:cce@ccs.neu.edu">cce@ccs.neu.edu</a>&gt; wrote:<br>
&gt; Oh, no, as far as a &quot;does it work out of the box&quot; experiment goes, it fails.<br>
&gt; Racket doesn&#39;t even compile.  I meant more along the lines of our<br>
&gt; immutable-cons experiment, where we fix a bunch of code and see how<br>
&gt; problematic the compatibility issue becomes over time.<br>
&gt;<br>
&gt; Carl Eastlund<br>
&gt;<br>
&gt;<br>
&gt; On Tue, Oct 2, 2012 at 9:56 AM, J. Ian Johnson &lt;<a href="mailto:ianj@ccs.neu.edu">ianj@ccs.neu.edu</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; This experiment should be easy to run, no? Change the default cond and run<br>
&gt;&gt; DrDr?<br>
&gt;&gt; -Ian<br>
&gt;&gt; ----- Original Message -----<br>
&gt;&gt; From: &quot;Carl Eastlund&quot; &lt;<a href="mailto:cce@ccs.neu.edu">cce@ccs.neu.edu</a>&gt;<br>
&gt;&gt; To: &quot;Racket Developers&quot; &lt;<a href="mailto:dev@racket-lang.org">dev@racket-lang.org</a>&gt;<br>
&gt;&gt; Sent: Tuesday, October 2, 2012 9:52:38 AM GMT -05:00 US/Canada Eastern<br>
&gt;&gt; Subject: [racket-dev] Falling through cond clauses<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; I often wish cond would raise an exception if all the tests failed and<br>
&gt;&gt; there were no else clause. I have taken to writing a macro to enforce this;<br>
&gt;&gt; I usually call it cond!. The void default for cond seems like an<br>
&gt;&gt; un-Racketish holdover from primarily-imperative programming. With some of<br>
&gt;&gt; the other changes we&#39;ve made in Racket, are we willing to consider changing<br>
&gt;&gt; the fall-through behavior of cond? It seems like an experiment worth running<br>
&gt;&gt; to me.<br>
&gt;&gt;<br>
&gt;&gt; If not, I would at least like to add an erroring version of cond somewhere<br>
&gt;&gt; in the language. It&#39;s a shame to have to keep writing such a primitive<br>
&gt;&gt; feature. Right now in my dracula github repo I have cond! implemented in<br>
&gt;&gt; racket/cond and re-exported from racket, but I&#39;m not thrilled about either<br>
&gt;&gt; the location or the name. I kept it out of racket/base so I could depend on<br>
&gt;&gt; the syntax collection for good source location reporting in the error<br>
&gt;&gt; message.<br>
&gt;&gt;<br>
&gt;&gt; Carl Eastlund<br>
&gt;&gt;<br>
&gt;&gt; _________________________<br>
&gt;&gt;   Racket Developers list:<br>
&gt;&gt;   <a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt; _________________________<br>
&gt;   Racket Developers list:<br>
&gt;   <a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
&gt;<br>
<br>
<br>
<br>
</div></div><span class="HOEnZb"><font color="#888888">--<br>
Jay McCarthy &lt;<a href="mailto:jay@cs.byu.edu">jay@cs.byu.edu</a>&gt;<br>
Assistant Professor / Brigham Young University<br>
<a href="http://faculty.cs.byu.edu/%7Ejay" target="_blank">http://faculty.cs.byu.edu/~jay</a><br>
<br>
&quot;The glory of God is Intelligence&quot; - D&amp;C 93<br>
<br>
</font></span></blockquote></div><br>