compiler bugs are bizarre. the first snippet produces bytecode that is valid, but swaps the closure values of b and middlefn in innerfn, so incorrect. the second snippet is completely fine. its going to be fun figuring out why.
stopping today at 77 expressions compiling in clojure/core.clj, ~11%. this issue is blocking concat, which is behind the syntax quote. after this... the language should be more or less bootstrapped?