mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-07-07 05:06:37 +02:00
fixing let* internal define
This commit is contained in:
parent
14c99c4729
commit
7050da677d
2 changed files with 11 additions and 2 deletions
4
init.scm
4
init.scm
|
@ -214,7 +214,7 @@
|
||||||
`(,(rename 'letrec) ((,(cadr expr)
|
`(,(rename 'letrec) ((,(cadr expr)
|
||||||
(,(rename 'lambda) ,(map car bindings)
|
(,(rename 'lambda) ,(map car bindings)
|
||||||
,@(cdddr expr))))
|
,@(cdddr expr))))
|
||||||
,(cons (cadr expr) (map cadr (caddr expr))))
|
,(cons (cadr expr) (map cadr bindings)))
|
||||||
`((,(rename 'lambda) ,(map car bindings) ,@(cddr expr))
|
`((,(rename 'lambda) ,(map car bindings) ,@(cddr expr))
|
||||||
,@(map cadr bindings)))
|
,@(map cadr bindings)))
|
||||||
(error "bad let syntax" expr)))
|
(error "bad let syntax" expr)))
|
||||||
|
@ -226,7 +226,7 @@
|
||||||
(if (null? (cdr expr)) (error "empty let*" expr))
|
(if (null? (cdr expr)) (error "empty let*" expr))
|
||||||
(if (null? (cddr expr)) (error "no let* body" expr))
|
(if (null? (cddr expr)) (error "no let* body" expr))
|
||||||
(if (null? (cadr expr))
|
(if (null? (cadr expr))
|
||||||
`(,(rename 'begin) ,@(cddr expr))
|
`(,(rename 'let) () ,@(cddr expr))
|
||||||
(if (if (list? (cadr expr))
|
(if (if (list? (cadr expr))
|
||||||
(every
|
(every
|
||||||
(lambda (x)
|
(lambda (x)
|
||||||
|
|
|
@ -77,6 +77,15 @@
|
||||||
|
|
||||||
(test 70 (let ((x 2) (y 3)) (let* ((x 7) (z (+ x y))) (* z x))))
|
(test 70 (let ((x 2) (y 3)) (let* ((x 7) (z (+ x y))) (* z x))))
|
||||||
|
|
||||||
|
(test -2 (let ()
|
||||||
|
(define x 2)
|
||||||
|
(define f (lambda () (- x)))
|
||||||
|
(f)))
|
||||||
|
|
||||||
|
(define let*-def 1)
|
||||||
|
(let* () (define let*-def 2) #f)
|
||||||
|
(test 1 let*-def)
|
||||||
|
|
||||||
(test '#(0 1 2 3 4)
|
(test '#(0 1 2 3 4)
|
||||||
(do ((vec (make-vector 5))
|
(do ((vec (make-vector 5))
|
||||||
(i 0 (+ i 1)))
|
(i 0 (+ i 1)))
|
||||||
|
|
Loading…
Add table
Reference in a new issue