Relocated letrec to scheme/base

This commit is contained in:
Justin Ethier 2015-08-21 01:43:51 -04:00
parent c79a96bae7
commit 026eaa6130
2 changed files with 20 additions and 23 deletions

View file

@ -86,7 +86,7 @@
or or
let let
let* let*
;letrec letrec
begin begin
case case
cond cond
@ -154,18 +154,25 @@
`(,(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 (define-syntax letrec
; (er-macro-transformer (er-macro-transformer
; (lambda (exp rename compare) (lambda (exp rename compare)
; (let* ((bindings (cadr exp)) ;(letrec->bindings exp) (let* ((bindings (cadr exp)) ;(letrec->bindings exp)
; (namings (map (lambda (b) (list (car b) #f)) bindings)) (namings (map (lambda (b) (list (car b) #f)) bindings))
; (names (map car (cadr exp))) ;(letrec->bound-vars exp) (names (map car (cadr exp))) ;(letrec->bound-vars exp)
; (sets (map (lambda (binding) (sets (map (lambda (binding)
; (cons 'set! binding)) (cons 'set! binding))
; bindings)) bindings))
; (args (map cadr (cadr exp)))) ;(letrec->args exp) (args (map cadr (cadr exp)))) ;(letrec->args exp)
; `(let ,namings `(let ,namings
; (begin ,@(append sets (cddr exp)))))))) ;(letrec->exp exp) (begin ,@(append sets (cddr exp)))))))) ;(letrec->exp exp)
;; NOTE: chibi uses the following macro. turns vars into defines?
;;(define-syntax letrec
;; (er-macro-transformer
;; (lambda (expr rename compare)
;; ((lambda (defs)
;; `((,(rename 'lambda) () ,@defs ,@(cddr expr))))
;; (map (lambda (x) (cons (rename 'define) x)) (cadr expr))))))
(define-syntax begin (define-syntax begin
(er-macro-transformer (er-macro-transformer
(lambda (exp rename compare) (lambda (exp rename compare)

View file

@ -138,7 +138,6 @@
(define (get-macros) *defined-macros*) (define (get-macros) *defined-macros*)
(define *defined-macros* (define *defined-macros*
(list (list
(cons 'letrec (lambda (exp rename compare) (letrec=>lets+sets exp)))
(cons 'cond-expand (cons 'cond-expand
;; Based on the cond-expand macro from Chibi scheme ;; Based on the cond-expand macro from Chibi scheme
(lambda (expr rename compare) (lambda (expr rename compare)
@ -931,15 +930,6 @@
(args (letrec->args exp))) (args (letrec->args exp)))
`(let ,namings `(let ,namings
(begin ,@(append sets (letrec->exp exp))))))) (begin ,@(append sets (letrec->exp exp)))))))
;; NOTE: chibi uses the following macro. turns vars into defines?
;;(define-syntax letrec
;; (er-macro-transformer
;; (lambda (expr rename compare)
;; ((lambda (defs)
;; `((,(rename 'lambda) () ,@defs ,@(cddr expr))))
;; (map (lambda (x) (cons (rename 'define) x)) (cadr expr))))))
;;
;; Top-level analysis ;; Top-level analysis