mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-24 20:45:06 +02:00
define-values stub
This commit is contained in:
parent
861bc8a7ca
commit
d819885048
1 changed files with 46 additions and 0 deletions
|
@ -66,6 +66,44 @@
|
||||||
(lambda args (let ((len (length args))) (%case args len 0 () . clauses))))))
|
(lambda args (let ((len (length args))) (%case args len 0 () . clauses))))))
|
||||||
;(lambda args (let ((len (length* args))) (%case args len 0 () . clauses))))))
|
;(lambda args (let ((len (length* args))) (%case args len 0 () . clauses))))))
|
||||||
|
|
||||||
|
;(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)))))
|
||||||
|
|
||||||
(write
|
(write
|
||||||
(letrec* ((x 1)) x))
|
(letrec* ((x 1)) x))
|
||||||
|
|
||||||
|
@ -92,3 +130,11 @@
|
||||||
(write
|
(write
|
||||||
(range 3 5)) ; => (3 4)
|
(range 3 5)) ; => (3 4)
|
||||||
|
|
||||||
|
;(define-values (x y) (integer-sqrt 17))
|
||||||
|
;(write
|
||||||
|
; (list x y)) ; => (4 1)
|
||||||
|
;
|
||||||
|
;(write
|
||||||
|
; (let ()
|
||||||
|
; (define-values (x y) (values 1 2))
|
||||||
|
; (+ x y))) ;=> 3
|
||||||
|
|
Loading…
Add table
Reference in a new issue