mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-21 14:49:17 +02:00
Added letrec stub
This commit is contained in:
parent
a228027ac4
commit
c79a96bae7
2 changed files with 15 additions and 2 deletions
|
@ -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)
|
||||||
|
|
|
@ -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)))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue