Advertisement
Dyrcona

fluid-let

Feb 3rd, 2022
2,609
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 0.52 KB | None | 0 0
  1. (define-macro fluid-let
  2.   (lambda (xexe . body)
  3.     (let ((xx (map car xexe))
  4.           (ee (map cadr xexe))
  5.           (old-xx (map (lambda (ig) (gensym)) xexe))
  6.           (result (gensym)))
  7.       `(let ,(map (lambda (old-x x) `(,old-x ,x))
  8.                   old-xx xx)
  9.          ,@(map (lambda (x e)
  10.                   `(set! ,x ,e))
  11.                 xx ee)
  12.          (let ((,result (begin ,@body)))
  13.            ,@(map (lambda (x old-x)
  14.                     `(set! ,x ,old-x))
  15.                   xx old-xx)
  16.            ,result)))))
  17.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement