<div dir="ltr"><div>If we want people to be able to create higher-order functions with precise arities via procedure-reduce-arity, for instance, we need to provide tools for manipulating arity values.  Manipulating them is also useful for producing error messages that describe the arity of procedure values.  I don&#39;t see any reason to close this stuff off, when it&#39;s the one useful, non-opaque aspect of procedure values.<br>

</div></div><div class="gmail_extra"><br clear="all"><div>Carl Eastlund</div>
<br><br><div class="gmail_quote">On Thu, Apr 11, 2013 at 11:13 AM, Eli Barzilay <span dir="ltr">&lt;<a href="mailto:eli@barzilay.org" target="_blank">eli@barzilay.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Is there a real need to make this whole thing a public interface?  I&#39;d<br>
think that a general direction is to move away from making it public<br>
(ie, remove the ability to create an arity value), and this seems to<br>
add a pretty big chunk of stuff in the opposite direction.<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
About two weeks ago, <a href="mailto:cce@racket-lang.org">cce@racket-lang.org</a> wrote:<br>
&gt; cce has updated `master&#39; from 6e40caa7e2 to df00bbb194.<br>
&gt;   <a href="http://git.racket-lang.org/plt/6e40caa7e2..df00bbb194" target="_blank">http://git.racket-lang.org/plt/6e40caa7e2..df00bbb194</a><br>
&gt;<br>
&gt; =====[ 7 Commits ]======================================================<br>
&gt; Directory summary:<br>
&gt;   21.0% collects/racket/private/<br>
&gt;   21.5% collects/racket/<br>
&gt;   26.4% collects/scribblings/reference/<br>
&gt;   30.9% collects/tests/racket/<br>
&gt;<br>
&gt; ~~~~~~~~~~<br>
&gt;<br>
&gt; 59b1e32 Carl Eastlund &lt;<a href="mailto:cce@racket-lang.org">cce@racket-lang.org</a>&gt; 2013-03-30 11:45<br>
&gt; :<br>
&gt; | Changed normalize-arity to coalesce arity-at-least with adjacent numbers.<br>
&gt; |<br>
&gt; | For instance, (normalize-arity (list 1 (arity-at-least 2))) now produces<br>
&gt; | (arity-at-least 1).  The implementation and the tests for normalize-arity both<br>
&gt; | reflect this change.  The randomized tests now also check that the output<br>
&gt; | represents the same arity as the input.<br>
&gt; :<br>
&gt;   M collects/racket/private/norm-arity.rkt |  82 +++++++++++++---------<br>
&gt;   M collects/tests/racket/basic.rktl       | 112 +++++++++++++++++++++++++-----<br>
&gt;<br>
&gt; ~~~~~~~~~~<br>
&gt;<br>
&gt; e356c66 Carl Eastlund &lt;<a href="mailto:cce@racket-lang.org">cce@racket-lang.org</a>&gt; 2013-03-30 11:49<br>
&gt; :<br>
&gt; | Re-provide normalize-arity from racket/function.<br>
&gt; :<br>
&gt;   M collects/racket/function.rkt | 4 ++--<br>
&gt;<br>
&gt; ~~~~~~~~~~<br>
&gt;<br>
&gt; 4dd011a Carl Eastlund &lt;<a href="mailto:cce@racket-lang.org">cce@racket-lang.org</a>&gt; 2013-03-30 15:49<br>
&gt; :<br>
&gt; | Added documentation for normalize-arity.<br>
&gt; :<br>
&gt;   M collects/scribblings/reference/procedures.scrbl | 42 ++++++++++++++++++----<br>
&gt;<br>
&gt; ~~~~~~~~~~<br>
&gt;<br>
&gt; 636f8a9 Carl Eastlund &lt;<a href="mailto:cce@racket-lang.org">cce@racket-lang.org</a>&gt; 2013-03-30 21:04<br>
&gt; :<br>
&gt; | Moved normalized-arity?, arity=?, and arity-includes? into racket/function.<br>
&gt; :<br>
&gt;   M collects/racket/function.rkt     | 94 +++++++++++++++++++++++++++++++++++-<br>
&gt;   M collects/tests/racket/basic.rktl | 96 +------------------------------------<br>
&gt;<br>
&gt; ~~~~~~~~~~<br>
&gt;<br>
&gt; aaa99d5 Carl Eastlund &lt;<a href="mailto:cce@racket-lang.org">cce@racket-lang.org</a>&gt; 2013-03-30 21:05<br>
&gt; :<br>
&gt; | Documented normalized-arity?, arity=?, and arity-includes?.<br>
&gt; :<br>
&gt;   M collects/scribblings/reference/procedures.scrbl | 87 +++++++++++++++++++---<br>
&gt;<br>
&gt; ~~~~~~~~~~<br>
&gt;<br>
&gt; f509420 Carl Eastlund &lt;<a href="mailto:cce@racket-lang.org">cce@racket-lang.org</a>&gt; 2013-03-30 17:12<br>
&gt; :<br>
&gt; | Removed unnecessary duplication of normalize-arity.<br>
&gt; :<br>
&gt;   M collects/tests/racket/fixnum.rktl | 21 ++-------------------<br>
&gt;<br>
&gt; ~~~~~~~~~~<br>
&gt;<br>
&gt; df00bbb Carl Eastlund &lt;<a href="mailto:cce@racket-lang.org">cce@racket-lang.org</a>&gt; 2013-03-31 10:34<br>
&gt; :<br>
&gt; | Updated contracts for arity-related functions.<br>
&gt; |<br>
&gt; | Added contract checking to arity=?, arity-includes?, and normalized-arity.<br>
&gt; | Removed contract checking from normalize-arity to make it a total predicate.<br>
&gt; | Updated documentation for normalize-arity to reflect this change.<br>
&gt; :<br>
&gt;   M collects/racket/function.rkt                    | 21 ++++++++++++++++-----<br>
&gt;   M collects/racket/private/norm-arity.rkt          |  2 ++<br>
&gt;   M collects/scribblings/reference/procedures.scrbl | 13 ++++++-------<br>
<br>
</div></div><span class="HOEnZb"><font color="#888888">--<br>
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:<br>
                    <a href="http://barzilay.org/" target="_blank">http://barzilay.org/</a>                   Maze is Life!<br>
<br>
</font></span></blockquote></div><br></div>