adding named let
This commit is contained in:
parent
2c1bb59486
commit
2a083db293
|
@ -40,10 +40,22 @@
|
||||||
(cons (f (car lst)) (map f (cdr lst)))))
|
(cons (f (car lst)) (map f (cdr lst)))))
|
||||||
|
|
||||||
(define-macro (let binds . body)
|
(define-macro (let binds . body)
|
||||||
(cons (list 'lambda
|
((lambda (lname)
|
||||||
(map (lambda (c) (if (pair? c) (car c) c)) binds)
|
(begin
|
||||||
(f-body body))
|
(if (symbol? binds)
|
||||||
(map (lambda (c) (if (pair? c) (cadr c) #f)) binds)))
|
(begin (set! lname binds)
|
||||||
|
(set! binds (car body))
|
||||||
|
(set! body (cdr body))))
|
||||||
|
((lambda (thelambda theargs)
|
||||||
|
(cons (if lname
|
||||||
|
(list 'label lname thelambda)
|
||||||
|
thelambda)
|
||||||
|
theargs))
|
||||||
|
(list 'lambda
|
||||||
|
(map (lambda (c) (if (pair? c) (car c) c)) binds)
|
||||||
|
(f-body body))
|
||||||
|
(map (lambda (c) (if (pair? c) (cadr c) #f)) binds))))
|
||||||
|
#f))
|
||||||
|
|
||||||
(define (nconc . lsts)
|
(define (nconc . lsts)
|
||||||
(cond ((null? lsts) ())
|
(cond ((null? lsts) ())
|
||||||
|
@ -142,7 +154,7 @@
|
||||||
(macroexpand (list 'lambda (cdr form) (f-body body)))))
|
(macroexpand (list 'lambda (cdr form) (f-body body)))))
|
||||||
(define macroexpand (macroexpand macroexpand))
|
(define macroexpand (macroexpand macroexpand))
|
||||||
|
|
||||||
(define = equal)
|
(define = eqv)
|
||||||
(define eql eqv)
|
(define eql eqv)
|
||||||
(define (/= a b) (not (equal a b)))
|
(define (/= a b) (not (equal a b)))
|
||||||
(define != /=)
|
(define != /=)
|
||||||
|
@ -522,3 +534,8 @@
|
||||||
(table.foldl (lambda (k v z) (put! nt k v))
|
(table.foldl (lambda (k v z) (put! nt k v))
|
||||||
() t)
|
() t)
|
||||||
nt))
|
nt))
|
||||||
|
|
||||||
|
(define *whitespace*
|
||||||
|
(string.encode #array(wchar 9 10 11 12 13 32 133 160 5760 6158 8192
|
||||||
|
8193 8194 8195 8196 8197 8198 8199 8200
|
||||||
|
8201 8202 8232 8233 8239 8287 12288)))
|
||||||
|
|
Loading…
Reference in New Issue