foreign-c-libraries/.tmp/system/chibi/.akku/lib/srfi/:15/fluid-let.sls

30 lines
873 B
Scheme

#!r6rs
;; Copyright 2000 Lars T Hansen
;; SPDX-License-Identifier: MIT
(library (srfi :15 fluid-let)
(export fluid-let)
(import (rnrs))
(define-syntax fluid-let
(syntax-rules ()
((_ ((v1 e1) ...) b1 b2 ...)
(fluid-let "temps" () ((v1 e1) ...) b1 b2 ...))
((_ "temps" (t ...) ((v1 e1) x ...) b1 b2 ...)
(let ((temp e1))
(fluid-let "temps" ((temp e1 v1) t ...) (x ...) b1 b2 ...)))
((_ "temps" ((t e v) ...) () b1 b2 ...)
(let-syntax ((swap!
(syntax-rules ()
((swap! a b)
(let ((tmp a))
(set! a b)
(set! b tmp))))))
(dynamic-wind
(lambda ()
(swap! t v) ...)
(lambda ()
b1 b2 ...)
(lambda ()
(swap! t v) ...)))))))