Added letrec stub

This commit is contained in:
Justin Ethier 2015-08-20 22:14:19 -04:00
parent a228027ac4
commit c79a96bae7
2 changed files with 15 additions and 2 deletions

View file

@ -86,6 +86,7 @@
or or
let let
let* let*
;letrec
begin begin
case case
cond cond
@ -153,6 +154,18 @@
`(,(rename 'let) (,(caar (cdr expr))) `(,(rename 'let) (,(caar (cdr expr)))
(,(rename 'let*) ,(cdar (cdr expr)) ,@(cddr expr))) (,(rename 'let*) ,(cdar (cdr expr)) ,@(cddr expr)))
(error "bad let* syntax")))))) (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 (define-syntax begin
(er-macro-transformer (er-macro-transformer
(lambda (exp rename compare) (lambda (exp rename compare)

View file

@ -366,11 +366,11 @@
(define (letrec->exp exp) (define (letrec->exp exp)
(cddr exp)) (cddr exp))
; letrec->exp : letrec-exp -> list[symbol] ; letrec->bound-vars : letrec-exp -> list[symbol]
(define (letrec->bound-vars exp) (define (letrec->bound-vars exp)
(map car (cadr exp))) (map car (cadr exp)))
; letrec->exp : letrec-exp -> list[exp] ; letrec->args : letrec-exp -> list[exp]
(define (letrec->args exp) (define (letrec->args exp)
(map cadr (cadr exp))) (map cadr (cadr exp)))