<p>I made precisely this suggestion to Matthias a week ago! I'd love to have this.</p>
<p><blockquote>On May 6, 2009 3:31 PM, "Doug Orleans" <<a href="mailto:dougorleans@gmail.com">dougorleans@gmail.com</a>> wrote:<br><br>Scheme has a nice symmetry between arguments and return values.<br>
Procedures like make-do-sequence take advantage of this: instead of<br>
taking six arguments, it takes a thunk that returns six values, so<br>
that it can generate the six values fresh every time an iterator is<br>
created. I'm always forgetting the order of the values, though; if<br>
they were arguments, then make-do-sequence could use keyword arguments<br>
so you wouldn't have to remember the order. But return values can't<br>
include keywords:<br>
<br>
> (call-with-values (lambda () (values #:y 3 1)) (lambda (x #:y (y 2)) (list x y)))<br>
procedure application: expected a procedure that accepts keyword<br>
arguments, given #<procedure:values>; arguments were: 1 #:y 3<br>
<br>
Would it be feasible to allow this? I think that would restore the<br>
symmetry between arguments and return values.<br>
<br>
--<a href="mailto:dougorleans@gmail.com">dougorleans@gmail.com</a><br>
_________________________________________________<br>
For list-related administrative tasks:<br>
<a href="http://list.cs.brown.edu/mailman/listinfo/plt-scheme" target="_blank">http://list.cs.brown.edu/mailman/listinfo/plt-scheme</a><br>
</blockquote></p>