(defmacro block
  ([] `nil)
  ([hd & tl]
    (if (and (seq? hd) (#{'let 'let*} (first hd)))
      `(let ~(second hd) (block ~@tl))
      `(do ~hd (block ~@tl)))))

; (use 'clojure.walk) (println (macroexpand-all '
(block
  (let [x 1])
  (let [y 2])
  (println (+ x y))
  (let [z 3])
  (println (+ x y z)))
; ))