(define-syntax my-fluid-let
  (syntax-rules ()
    ((_ ((var val) ...) body ...)
     (my-fluid-let "temp" () ((var val) ...) body ...))
    ((_ "temp" (t ...)((var val) x ...) body ...)
     (let1 temp val
       (my-fluid-let-helper (t ... (temp var))(x ...) body ...)))
    ((_ "temp" ((temp var) ...)() body ...)
     (let-syntax ((swap! (syntax-rules ()
                           ((swap! a b)
                            (let1 tmp a
                              (set! a b)
                              (set! b tmp))))))
       (dynamic-wind
         (lambda ()
           (swap! temp var) ...)
         (lambda ()
           body ...)
         (lambda ()
           (swap! temp var) ...))))))

(a+b)
;; 3
(my-fluid-let ((a 100)(b 200))
              (a+b))
;; 300
(a+b)
;; 3