From c79a96bae7757d2ec62776d3b2b05fffcdb3394d Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Thu, 20 Aug 2015 22:14:19 -0400 Subject: [PATCH] Added letrec stub --- scheme/base.sld | 13 +++++++++++++ scheme/cyclone/transforms.sld | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/scheme/base.sld b/scheme/base.sld index f57c1686..85e0e623 100644 --- a/scheme/base.sld +++ b/scheme/base.sld @@ -86,6 +86,7 @@ or let let* + ;letrec begin case cond @@ -153,6 +154,18 @@ `(,(rename 'let) (,(caar (cdr expr))) (,(rename 'let*) ,(cdar (cdr expr)) ,@(cddr expr))) (error "bad let* syntax")))))) +; (define-syntax letrec +; (er-macro-transformer +; (lambda (exp rename compare) +; (let* ((bindings (cadr exp)) ;(letrec->bindings exp) +; (namings (map (lambda (b) (list (car b) #f)) bindings)) +; (names (map car (cadr exp))) ;(letrec->bound-vars exp) +; (sets (map (lambda (binding) +; (cons 'set! binding)) +; bindings)) +; (args (map cadr (cadr exp)))) ;(letrec->args exp) +; `(let ,namings +; (begin ,@(append sets (cddr exp)))))))) ;(letrec->exp exp) (define-syntax begin (er-macro-transformer (lambda (exp rename compare) diff --git a/scheme/cyclone/transforms.sld b/scheme/cyclone/transforms.sld index 2de16d1a..87507374 100644 --- a/scheme/cyclone/transforms.sld +++ b/scheme/cyclone/transforms.sld @@ -366,11 +366,11 @@ (define (letrec->exp exp) (cddr exp)) -; letrec->exp : letrec-exp -> list[symbol] +; letrec->bound-vars : letrec-exp -> list[symbol] (define (letrec->bound-vars exp) (map car (cadr exp))) -; letrec->exp : letrec-exp -> list[exp] +; letrec->args : letrec-exp -> list[exp] (define (letrec->args exp) (map cadr (cadr exp)))