Whoops, I should've read the docs more closely. You can specify your own default values for unspecified keywords:<br><br>> (define (my-func #!key (bool-arg 'unspecified)) (if (eq? bool-arg 'unspecified) "bool-arg unspecified" bool-arg))<br>

> (my-func)<br>"bool-arg unspecified"<br>> (my-func bool-arg: #t)<br>#t<br>> (my-func bool-arg: #f)<br>#f<br><br>Sorry for the spam,<br>-- Matt<br><br><div class="gmail_quote">On Sun, Jun 19, 2011 at 6:28 PM, Matthew Koichi Grimes <span dir="ltr"><<a href="mailto:mkg@cs.nyu.edu">mkg@cs.nyu.edu</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">When a keyword argument is left unspecified, it is initialized to #f. This can get weird for optional boolean arguments. For example:<br>

<br>Example:<br><br>> (define (my-func #!key bool-arg) (if bool-arg bool-arg "bool-arg unspecified"))<br>
> (my-func bool-arg: #t)<br>#t<br>> (my-func)<br>"bool-arg unset"<br>> (my-func bool-arg: #f)<br>"bool-arg unset"<br><br> Is there any way to distinguish between keyword arguments that were never set, and keyword arguments that were set to #f?<br>


</blockquote></div><br>