adding named let
This commit is contained in:
parent
2c1bb59486
commit
2a083db293
|
@ -40,10 +40,22 @@
|
|||
(cons (f (car lst)) (map f (cdr lst)))))
|
||||
|
||||
(define-macro (let binds . body)
|
||||
(cons (list 'lambda
|
||||
((lambda (lname)
|
||||
(begin
|
||||
(if (symbol? 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)))
|
||||
(map (lambda (c) (if (pair? c) (cadr c) #f)) binds))))
|
||||
#f))
|
||||
|
||||
(define (nconc . lsts)
|
||||
(cond ((null? lsts) ())
|
||||
|
@ -142,7 +154,7 @@
|
|||
(macroexpand (list 'lambda (cdr form) (f-body body)))))
|
||||
(define macroexpand (macroexpand macroexpand))
|
||||
|
||||
(define = equal)
|
||||
(define = eqv)
|
||||
(define eql eqv)
|
||||
(define (/= a b) (not (equal a b)))
|
||||
(define != /=)
|
||||
|
@ -522,3 +534,8 @@
|
|||
(table.foldl (lambda (k v z) (put! nt k v))
|
||||
() t)
|
||||
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