Linus Björnstam schreef op wo 16-06-2021 om 21:11 [+0200]: > Hi there! > > This patch updates some derived conditional forms (and do and and-let*) > to support definitions in expression context. Meaning it makes this valid > code: > > (cond > ((pred? arg) > (define a (something arg)) > (when (error-case a) > (error "a is broken")) [...]
This seems a useful change to me. However, this is not valid R6RS. From <http://www.r6rs.org/final/r6rs.pdf>: (cond hcond clause1i hcond clause2i . . . ) syntax => auxiliary syntax else auxiliary syntax Syntax: Each hcond clausei must be of the form (htesti hexpression1i . . . ) where htesti is an expression. Alternatively, a hcond clausei may be of the form (htesti => hexpressioni) This seems a compatibility pitfall, so maybe note in the documentation that using definitions in the clauses is a Guile and Racket extension and not standard R6RS? (I try to write Scheme code as R6RS / R7RS library & define-library forms, importing mostly R6RS / R7RS & SRFI libraries, though I occasionally use a Guile extension.) Greetings, Maxime
signature.asc
Description: This is a digitally signed message part