mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-12 07:17:37 +02:00
Added define-values
This commit is contained in:
parent
31036f3b1f
commit
40894ecb3e
2 changed files with 45 additions and 7 deletions
|
@ -1,5 +1,11 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 0.11.9 - TBD
|
||||||
|
|
||||||
|
Features
|
||||||
|
|
||||||
|
- Added `define-values` from R7RS.
|
||||||
|
|
||||||
## 0.11.8 - December 30, 2019
|
## 0.11.8 - December 30, 2019
|
||||||
|
|
||||||
Features
|
Features
|
||||||
|
|
|
@ -162,6 +162,7 @@
|
||||||
letrec
|
letrec
|
||||||
let*-values
|
let*-values
|
||||||
let-values
|
let-values
|
||||||
|
define-values
|
||||||
begin
|
begin
|
||||||
case
|
case
|
||||||
cond
|
cond
|
||||||
|
@ -203,13 +204,6 @@
|
||||||
; rationalize
|
; rationalize
|
||||||
;
|
;
|
||||||
; ;; syntax-rules
|
; ;; syntax-rules
|
||||||
; define-values
|
|
||||||
;
|
|
||||||
; unclassified TODO's:
|
|
||||||
; import
|
|
||||||
; include
|
|
||||||
; let-syntax
|
|
||||||
; letrec-syntax
|
|
||||||
;;;;
|
;;;;
|
||||||
)
|
)
|
||||||
(inline
|
(inline
|
||||||
|
@ -2025,4 +2019,42 @@
|
||||||
(,(rename 'vector)
|
(,(rename 'vector)
|
||||||
,@make-fields))))
|
,@make-fields))))
|
||||||
)))))
|
)))))
|
||||||
|
|
||||||
|
(define-syntax define-values
|
||||||
|
(syntax-rules ()
|
||||||
|
((define-values () expr)
|
||||||
|
(define dummy
|
||||||
|
(call-with-values (lambda () expr)
|
||||||
|
(lambda args #f))))
|
||||||
|
((define-values (var) expr)
|
||||||
|
(define var expr))
|
||||||
|
((define-values (var0 var1 ... varn) expr)
|
||||||
|
(begin
|
||||||
|
(define var0
|
||||||
|
(call-with-values (lambda () expr) list))
|
||||||
|
(define var1
|
||||||
|
(let ((v (cadr var0)))
|
||||||
|
(set-cdr! var0 (cddr var0))
|
||||||
|
v))
|
||||||
|
...
|
||||||
|
(define varn
|
||||||
|
(let ((v (cadr var0)))
|
||||||
|
(set! var0 (car var0))
|
||||||
|
v))))
|
||||||
|
;((define-values (var0 var1 ... . var-dot) expr)
|
||||||
|
; (begin
|
||||||
|
; (define var0
|
||||||
|
; (call-with-values (lambda () expr) list))
|
||||||
|
; (define var1
|
||||||
|
; (let ((v (cadr var0)))
|
||||||
|
; (set-cdr! var0 (cddr var0))
|
||||||
|
; v))
|
||||||
|
; ...
|
||||||
|
; (define var-dot
|
||||||
|
; (let ((v (cdr var0)))
|
||||||
|
; (set! var0 (car var0))
|
||||||
|
; v))))
|
||||||
|
((define-values var expr)
|
||||||
|
(define var
|
||||||
|
(call-with-values (lambda () expr) list)))))
|
||||||
))
|
))
|
||||||
|
|
Loading…
Add table
Reference in a new issue