<div dir="ltr">I think maybe you&#39;ve just found a bug. Do you have a program to share?<div><br></div><div><div>[robby@yanpu] ~/Downloads$ racket</div><div>Welcome to Racket v5.3.1.12.</div><div>&gt; ((contract (-&gt; integer? integer?) (lambda (x) (values 1 2)) &#39;pos &#39;neg) 1)</div>
<div>stdin::2: broke its contract</div><div> expected 1 value, returned 2 values</div><div> in: the range of</div><div>      (-&gt; integer? integer?)</div><div> contract from: pos</div><div> blaming: pos</div><div>  context...:</div>
<div>   /Users/robby/git/plt/collects/racket/contract/private/blame.rkt:89:0: raise-blame-error</div><div>   /Users/robby/git/plt/collects/racket/private/misc.rkt:87:7</div></div><div><br></div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Sun, Jan 6, 2013 at 12:26 PM, Matthias Felleisen <span dir="ltr">&lt;<a href="mailto:matthias@ccs.neu.edu" target="_blank">matthias@ccs.neu.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Is this really the best we can do for a contracted first-order procedure that accidentally returns two values instead of one:<br>
<br>
Language: racket.<br>
. . procedure-result chaperone: arity mismatch;<br>
 wrapper does not accept the number of values produced by<br>
 the original procedure<br>
  wrapper: #&lt;procedure&gt;<br>
  number of values: 2<br>
<br>
<br>
??<br>
<br>
-- Matthias<br>
<br>
<br>
_________________________<br>
  Racket Developers list:<br>
  <a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
</blockquote></div><br></div>