mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-19 13:49:17 +02:00
fixed let(*)-values when no bindings are given
This commit is contained in:
parent
6e99306ccd
commit
7197accf1f
2 changed files with 12 additions and 3 deletions
|
@ -6,7 +6,7 @@
|
||||||
(define-syntax let*-values
|
(define-syntax let*-values
|
||||||
(syntax-rules ()
|
(syntax-rules ()
|
||||||
((let*-values () . body)
|
((let*-values () . body)
|
||||||
(begin . body))
|
(let () . body))
|
||||||
((let*-values (((a) expr) . rest) . body)
|
((let*-values (((a) expr) . rest) . body)
|
||||||
(let ((a expr)) (let*-values rest . body)))
|
(let ((a expr)) (let*-values rest . body)))
|
||||||
((let*-values ((params expr) . rest) . body)
|
((let*-values ((params expr) . rest) . body)
|
||||||
|
@ -14,6 +14,8 @@
|
||||||
(lambda params (let*-values rest . body))))))
|
(lambda params (let*-values rest . body))))))
|
||||||
(define-syntax let-values
|
(define-syntax let-values
|
||||||
(syntax-rules ()
|
(syntax-rules ()
|
||||||
|
((let-values () . body)
|
||||||
|
(let () . body))
|
||||||
((let-values ("step") (binds ...) bind expr maps () () . body)
|
((let-values ("step") (binds ...) bind expr maps () () . body)
|
||||||
(let*-values (binds ... (bind expr)) (let maps . body)))
|
(let*-values (binds ... (bind expr)) (let maps . body)))
|
||||||
((let-values ("step") (binds ...) bind old-expr maps () ((params expr) . rest) . body)
|
((let-values ("step") (binds ...) bind old-expr maps () ((params expr) . rest) . body)
|
||||||
|
@ -23,5 +25,4 @@
|
||||||
((let-values ("step") binds (bind ...) expr (maps ...) x rest . body)
|
((let-values ("step") binds (bind ...) expr (maps ...) x rest . body)
|
||||||
(let-values ("step") binds (bind ... . tmp) expr (maps ... (x tmp)) () rest . body))
|
(let-values ("step") binds (bind ... . tmp) expr (maps ... (x tmp)) () rest . body))
|
||||||
((let-values ((params expr) . rest) . body)
|
((let-values ((params expr) . rest) . body)
|
||||||
(let-values ("step") () () expr () params rest . body))
|
(let-values ("step") () () expr () params rest . body))))))
|
||||||
))))
|
|
||||||
|
|
|
@ -237,6 +237,14 @@
|
||||||
((x y) (values a b)))
|
((x y) (values a b)))
|
||||||
(list a b x y))))
|
(list a b x y))))
|
||||||
|
|
||||||
|
(test 'ok (let-values () 'ok))
|
||||||
|
|
||||||
|
(test 1 (let ((x 1))
|
||||||
|
(let*-values ()
|
||||||
|
(define x 2)
|
||||||
|
#f)
|
||||||
|
x))
|
||||||
|
|
||||||
(let ()
|
(let ()
|
||||||
(define x 0)
|
(define x 0)
|
||||||
(set! x 5)
|
(set! x 5)
|
||||||
|
|
Loading…
Add table
Reference in a new issue