From 8f0921a9bd36314da6538ccfd9b5cfbe84f095ea Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 25 May 2011 03:09:26 -0600 Subject: [PATCH] add shortcut to expand R6RS `letrec' of procedures to Racket `letrec' --- collects/rnrs/base-6.rkt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/collects/rnrs/base-6.rkt b/collects/rnrs/base-6.rkt index c5d6088488..16fa9895eb 100644 --- a/collects/rnrs/base-6.rkt +++ b/collects/rnrs/base-6.rkt @@ -457,8 +457,12 @@ ;; letrec ;; Need bindings like R5RS, but int-def body like Racket -(define-syntax-rule (r6rs:letrec bindings . body) - (r5rs:letrec bindings (let () (#%stratified-body . body)))) +(define-syntax (r6rs:letrec stx) + (syntax-case stx (r6rs:lambda) + [(_ ([id (r6rs:lambda . rest)] ...) . body) + #'(letrec ([id (r6rs:lambda . rest)] ...) (let () (#%stratified-body . body)))] + [(_ bindings . body) + #'(r5rs:letrec bindings (let () (#%stratified-body . body)))])) (define-syntax-rule (r6rs:letrec* bindings . body) (letrec bindings (#%stratified-body . body)))