named let-fu FIXME
This commit is contained in:
parent
497bbdc76f
commit
bca8061232
|
@ -22,16 +22,16 @@
|
||||||
`(,`(lambda ,(map car bindings) ,@rest)
|
`(,`(lambda ,(map car bindings) ,@rest)
|
||||||
,@(map cadr bindings)))
|
,@(map cadr bindings)))
|
||||||
|
|
||||||
(define-macro (xnamed-let label bindings rest)
|
(define-macro (xnamed-let name bindings rest)
|
||||||
`(simple-let ((,label *unspecified*))
|
`(simple-let ((,name *unspecified*))
|
||||||
(set! ,label (lambda ,(map car bindings) ,@rest))
|
(set! ,name (lambda ,(map car bindings) ,@rest))
|
||||||
(,label ,@(map cadr bindings))))
|
(,name ,@(map cadr bindings))))
|
||||||
|
|
||||||
;; IF
|
;; IF
|
||||||
(define-macro (let bindings-or-label . rest)
|
(define-macro (let bindings-or-name . rest)
|
||||||
`(if ,(symbol? bindings-or-label) ;; IF
|
`(if ,(symbol? bindings-or-name) ;; IF
|
||||||
(xnamed-let ,bindings-or-label ,(car rest) ,(cdr rest))
|
(xnamed-let ,bindings-or-name ,(car rest) ,(cdr rest))
|
||||||
(xsimple-let ,bindings-or-label ,rest)))
|
(xsimple-let ,bindings-or-name ,rest)))
|
||||||
|
|
||||||
(define (expand-let* bindings body)
|
(define (expand-let* bindings body)
|
||||||
(if (null? bindings)
|
(if (null? bindings)
|
||||||
|
|
Loading…
Reference in New Issue