yes but convention of BODY being a list in not mentioned in the SRFI.
in fact i have concern only with the latter template not the one, i rarely use rec and only the 2nd template i use.
I just asked it because i wanted to inject infix feature in the body of rec to create a rec+ for scheme+
it seems chez scheme use only the latter template according this site but it is not sure, i have not checked the code:
for rec+ i will rely on the guile definition, perheaps like that:
(module rec+ racket/base
(provide rec+)
(require
Scheme+/nfx)
(define-syntax rec+
(syntax-rules ()
((_ (name . formals) body ...) ; procedure
(letrec ((name (lambda formals ($nfx$-rec body) ...)))
name))
((_ name expr) ; arbitrary object
(letrec ((name ($nfx$-rec expr)))
name))))
)
or even simplier , i could construct rec+ with lambda+ that i recently added and this give the possibility to return :
(module rec+ racket/base
(provide rec+)
(require srfi/31
Scheme+/lambda+)
(define-syntax rec+
(syntax-rules ()
((_ (name . formals) body ...) ; procedure
(letrec ((name (lambda+ formals body ...)))
name))
((_ name expr) ; arbitrary object
(letrec ((name ($nfx$-rec expr)))
name))))
)
but that sound strange because there is a lambda+ in the first pattern and not the other , but the user can use lambda+ in expr.And it would then cause the infix parsing/detection run twice ,one time on the code , another on result,to be tested.....