- `(code
- "try {"
- (code "var tmp;"
- ,@(mapcar
- (lambda (b)
- (let ((s (ls-compile `(quote ,(car b)))))
- `(code "tmp = " ,s ".value;"
- ,s ".value = " ,(cdr b) ";"
- ,(cdr b) " = tmp;" )))
- bindings)
- ,body
- )
- "}"
- "finally {"
- (code
- ,@(mapcar (lambda (b)
- (let ((s (ls-compile `(quote ,(car b)))))
- `(code ,s ".value" " = " ,(cdr b) ";" )))
- bindings))
- "}" ))
+ `(progn
+ (try (var tmp)
+ ,@(with-collect
+ (dolist (b bindings)
+ (let ((s (ls-compile `',(car b))))
+ (collect `(= tmp (get ,s "value")))
+ (collect `(= (get ,s "value") ,(cdr b)))
+ (collect `(= ,(cdr b) tmp)))))
+ ,body)
+ (finally
+ ,@(with-collect
+ (dolist (b bindings)
+ (let ((s (ls-compile `(quote ,(car b)))))
+ (collect `(= (get ,s "value") ,(cdr b)))))))))