[functional-tests] fluid-let

This commit is contained in:
Joe Thornber 2017-08-23 11:10:53 +01:00
parent 2fe464a4cf
commit bc765ce89d

View File

@ -2,7 +2,8 @@
(utils)
(export inc!
dec!
swap!)
swap!
fluid-let)
(import (rnrs))
(define-syntax inc!
@ -21,4 +22,16 @@
(let ((tmp x))
(set! x y)
(set! y tmp)))))
(define-syntax fluid-let
(syntax-rules ()
((_ ((x e)) b1 b2 ...)
(let ((y e))
(let ((swap (lambda ()
(let ((t x))
(set! x y)
(set! y t)))))
(dynamic-wind swap (lambda ()
b1 b2 ...)
swap))))))
)