foreign-c-libraries/.tmp/system/chibi/.akku/lib/srfi/srfi-15.guile.sls

30 lines
867 B
Scheme

;; Copyright 2000 Lars T Hansen
;; SPDX-License-Identifier: MIT
#!r6rs
(library (srfi srfi-15)
(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) ...)))))))