Thanks.&nbsp; The source of the problem was that I missed the note in the documentation for scheme/kw saying that <br><br>&quot;<span class="refcolumn"><span class="refcontent">The <span class="schemesymbol"><a href="file:///C:/Program%20Files/PLT-FULL-3.99.0.26/doc/reference/lambda.html#%28form._%28%28lib._scheme/base..ss%29._lambda%29%29" class="schemesyntaxlink">lambda</a></span> and procedure-application forms of
<span class="schemesymbol">scheme/base</span> support keyword arguments, and it is
<i>not</i> compatible with the <span class="schemesymbol">mzlib/kw</span>
library.&quot;<br><br>and blithely went on thinking they were the same.&nbsp; I&#39;ll pay more attention to the sidenotes in the future.&nbsp; Thanks again.<br></span></span><br><div class="gmail_quote">On Fri, Jun 13, 2008 at 2:31 PM, Robby Findler &lt;<a href="mailto:robby@cs.uchicago.edu">robby@cs.uchicago.edu</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">That function accepts a mandatory keyword parameter using the keyword<br>
whose name just happens to be #:optional which, I&#39;m guessing, is not<br>
what you intended.<br>
<br>
Anyways, here is its contract:<br>
<br>
 &nbsp;(-&gt; any/c #:optional any/c false/c)<br>
<br>
If you wanted a function that takes either one or two arguments (as<br>
the contract suggests), I think you meant to write it like this:<br>
<br>
 &nbsp;(define (foo a [b #f]) #f)<br>
<br>
(They keyword syntax changed a little bit from 372&#39;s (lib &quot;kw.ss&quot;) to<br>
4.0. Maybe that&#39;s the source of the confusion?)<br>
<br>
Robby<br>
<div><div></div><div class="Wj3C7c"><br>
On Fri, Jun 13, 2008 at 1:28 PM, David Einstein &lt;<a href="mailto:deinst@gmail.com">deinst@gmail.com</a>&gt; wrote:<br>
&gt; How do I write a contract for the following<br>
&gt;<br>
&gt; (define (foo a #:optional b) #f)<br>
&gt;<br>
&gt; I would have thought that<br>
&gt;<br>
&gt; (provide/contract<br>
&gt; &nbsp; [foo (-&gt;* (any/c) (any/c) false?)]<br>
&gt; )<br>
&gt;<br>
&gt; would work, but obviously I&#39;m missing something.<br>
&gt;<br>
&gt;<br>
</div></div>&gt; _________________________________________________<br>
&gt; &nbsp;For list-related administrative tasks:<br>
&gt; &nbsp;<a href="http://list.cs.brown.edu/mailman/listinfo/plt-scheme" target="_blank">http://list.cs.brown.edu/mailman/listinfo/plt-scheme</a><br>
&gt;<br>
&gt;<br>
</blockquote></div><br>