<div dir="ltr">Hi - <br><br>it seems that the structs marked as procedures cannot accept keyword arguments, even if the procedure in prop:procedure does.&nbsp; Is this by design or there is a different way to mark struct as keyword procedures?&nbsp; <br>
<br>Thanks,<br>yc<br><br><span style="font-family: courier new,monospace;">&gt; (define-struct *res (filter args)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; #:property prop:procedure</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp; (lambda (s x #:error (e #f))</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; (let ((res (apply (*res-filter s) (cons x (*res-args s)))))</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (not e)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; res</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (error &#39;restriction))))</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&nbsp; )</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&gt; (define color (make-*res (lambda (x enum) (member x enum)) &#39;((red white blue))))</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">&gt; (color &#39;black #:error #t)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">;; =&gt; error <br>procedure application: expected a procedure that accepts keyword arguments, given #(struct:*res #&lt;procedure:...t/valere/res1\<br>.ss:10:25&gt; (red white blue)); arguments were: black #:error #t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
<br></span></div>