Source code of rec from SRFI 31

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.....