Attached is a patch against guile-core CVS HEAD to implement SRFI 61 in the core. While it makes COND incompatible with RnRS COND, it is unlikely that any code has been written that would operate differently with this cond -- the most reasonable case of these involves binding => as a variable, then referring to it in an essentially void context. I also have a pure syntax-rules version, written by me, that uses if, begin, lambda, apply, let, and call-with-values to completely implement RnRS cond plus SRFI 61 cond. It is not possible to translate an SRFI 61 cond form directly to RnRS cond without using non-local exits, and even then the action forms are not in tail position, at least not the way primitive cond is currently evaluated. If you would rather use that implementation, I will be happy to post it. Here are changelog entries for srfi/ChangeLog, doc/ref/ChangeLog, and libguile/ChangeLog, respectively. 2005-07-29 Stephen Compall * srfi-61.scm: New file. * Makefile.am (srfi_DATA): Add srfi-61.scm. 2005-07-29 Stephen Compall * srfi-modules.texi (SRFI-61): New section. (SRFI Support): Add SRFI-61 to menu. 2005-07-29 Stephen Compall * eval.c (scm_m_cond): Recognize SRFI 61 cond syntax. (CEVAL): Evaluate SRFI 61 cond clauses. -- Stephen Compall